Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
Дан ориентированный граф. Подсчитайте, сколько пар вершин ( i , j ) имеют общего предка. Общим предком вершин i и j называется такая вершину k , что и i , и j достижимы из k .
В первой строке входного файла содержатся целые числа 1 ≤ N ≤ 10 4 , 0 ≤ M ≤ 10 4 — количество вершин и рёбер в графе. Далее следуют M строк по два числа от 1 до N . Пара чисел ( a , b ) означает, что из вершины a есть ребро в вершину b .
Выведите одно целое число — количество пар.
2 1 1 2
4
3 2 2 1 3 1
7
Палиндром - это слово, которое читается справа налево также, как слева направо. Например, "a", "abba", "anavolimilovana" - палиндромы.
Весом строки, состоящей из строчных латинских символов будем называть количество ее подстрок (слов), являющихся палиндромами (при этом каждое вхождение подстроки считается отдельно). Формально, пусть W - строка длины N . Слово w a , b - подстрока W , состоящая из символов на позициях с индексами с a по b включительно. Вес строки W - это количество пар целых чисел a , b ( 1 ≤ a , b ≤ N ) таких, что w a , b является палиндромом.
Вам дана строка, состоящая из строчных латинских символов. Вы можете либо оставить ее неизменной, либо поменять любой из ее символов на любой другой символ. Найдите максимально возможный вес строки, которую вы можете получить.
Первая строка содержит одну строку W ( 1 ≤ | W | ≤ 100000 ), состоящую из строчных латинских символов.
Выведите одно целое число - максимально возможный вес.
Решения, работающие при
|
W
| ≤ 100
, будут оцениваться в 17 баллов.
Решения, работающие при
|
W
| ≤ 5000
, будут оцениваться еще в 37 баллов.
aaaa
10
baccb
9
slavko
7
Пусть дан строчный латинский символ c . Тогда операция shift ( c ) превращает c в следующий по порядку символ в алфавите. Например, shift (a) = b, shift (e) = f, shift (z) = a.
Дана строка S , состоящая из N строчных латинских символов (индексация с 0). Необходимо обработать Q запросов 2 типов:
"1 i j t": ко всем элементам строки с индексами в отрезке [i:j] применить t раз операцию shift .
"2 i j": найдите количество непустых подмножеств символов строки { c 1 , c 2 , ... , c k }, где i ≤ index c 1 < index c 2 < ... < index c k ≤ j , таких что символы подмножества, переставленные в некотором порядке, образуют палиндромом. Так как число может быть очень большим, выведите его по модулю 10 9 + 7 .
Два подмножества символов строки называются различными, если множества индексов их элементов различаются.
Строка называется палиндромом, если читается слева направо также, как справа налево.
Первая строка содержит два целых числа N и Q ( 1 ≤ N , Q ≤ 10 5 ) - длину строки и количество запросов соответственно. Вторая строка содержит одну строку S длины N , состоящую из строчных латинских символов. Каждая из последующих Q строк содержит запрос в формате, описанном в условии.
Для каждого запроса второго типа выведите одно целое число - ответ на данный запрос.
Решения, работающие при N ≤ 500 и Q ≤ 500 , будут оцениваться в 20 баллов.
Решения, работающие при условии, что все запросы являются запросами второго типа, оцениваются еще в 30 баллов.
3 5 aba 2 0 2 2 0 0 2 1 2 1 0 1 1 2 0 2
5 1 2 3
5 7 acdec 2 0 3 1 3 4 36 1 2 3 81 1 1 4 11 2 3 3 2 2 3 2 1 2
4 1 2 2
Определить можно ли с использованием только операций «прибавить 3» и «прибавить 5» получить из числа \(1\) число \(N\) (\(N\) - натуральное, не превышает 200. Разумеется, само число \(1\) получить можно, просто не применяя никаких операций.
Вводится число \(N\).
Выведите слово YES, если число \(N\) можно получить из числа \(1\), или NO - в противном случае.
1
YES
3
NO
Дана строка, содержащая только десятичные цифры. Найти и вывести наибольшую цифру.
Вводится строка ненулевой длины. Известно также, что длина строки не превышает 1000 знаков и строка содержит только десятичные цифры.
Выведите максимальную цифру, которая встречается во введенной строке.
11111111
1