Алгоритмы

918 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Пастбище Фермера Джона можно рассматривать решётку из квадратных ячеек размером \(N\times M\) (\(2\le N\le 10^9\), \(2\le M\le 2\cdot 10^5\)) (как большая шахматная доска). Ячейка в строке \(x\) сверху в колонке \(y\) обозначается как \((x,y)\) для каждого \(x\in [1,N], y\in [1,M]\). Далее для каждого \(y\in [1,M]\), \(y\)-ая колонка ассоциируется со стоимостью \(c_y\) (\(1\le c_y\le 10^9\)).

Беси начинает в ячейке \((1,1)\). Если она находится в ячейке \((x,y)\), она может выполнить одно из следующих действий:

  • Если \(y<M\), Беси может переместиться в следующую колонку (увеличивая \(y\) на 1) за цену \(x^2\).
  • Если \(x<N\), Беси может переместиться в следующую строку (увеличивая \(x\) на 1) за цену \(c_y\).

ВАм даются \(Q\) (\(1\le Q\le 2\cdot 10^5\)) независимых запросов, каждый в виде \((x_i,y_i)\) (\(x_i\in [1,N], y_i\in [1,M]\)), вычислите минимально возможную цену для Беси переместиться из \((1,1)\) в \((x_i,y_i)\). compute the minimum possible total

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(N\) и \(M\).

Вторая строка содержит \(M\) разделённых пробелом целых чисел \(c_1,c_2,\ldots,c_M\).

Третья строка содержит \(Q\).

Каждая из последующих \(Q\) строк содержит два целых числа \(x_i\) и \(y_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

\(Q\) строк, содержащих ответы на каждый запрос.

Заметим, что ответ требует использования 64-битного целого, например "long long" в C/C++).

Это малоизвестный факт, что у коров свой алфавит - "cowphabet". Он состоит из 26 букв от a' до 'z', однако порядок букв в этом "cowphabet" может отличаться от стандартного порядка 'abcdefghijklmnopqrstuvwxyz'.

Коротая время, Милдред бормочет cowphabet опять и опять. Фермер Нхой хочет узнать, сколько раз она пробормотала cowphabet.

По заданной строке букв, которые услышал ФН, вычислите минимальное количество раз, которое Милдред пробормотала весь cowphabet. ФН мог не услышать некоторые из букв, которые бормотала Милдред.

Замечание: время на тест для этой задачи удвоено.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Единственная строка ввода содержит строку маленьких букв, которые услышал ФН. Эта строка имеет длину от \(1\) до \(10^5\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите минимальное количество раз, которое Милдред произнесла весь cowphabet.

Telephone#90133
\(N\) коров Фермера Джона, последовательно пронумерованные, \(1 \ldots N\) выстроены в ряд (\(1\le N\le 5\cdot 10^4\)). \(i\)-ая корова имеет идентификатор породы \(b_i\) в интервале \(1 \ldots K\), with \(1\le K\le 50\). Коровы нуждаются в Вашей помощи чтобы узнать, как быстрее передать сообщение от коровы \(1\) корове \(N\).

\(|i-j|\) минут требуется, чтобы передать сообщение от коровы \(i\) к корове \(j\). Однако не все породы готовы взаимодействовать друг с другом, что описано в матрице \(S\) размером \(K \times K\), где \(S_{ij} = 1\) если корова породы \(i\) готова передать сообщение корове породы \(j\) и 0 в противном случае. Необязательно истина то, что \(S_{ij}=S_{ji}\), и даже может быть случай, когда \(S_{ii} = 0\), то есть корова породы \(i\) не будет передавать сообщение корове своей породы.

Определите минимальное количество времени, которое потребуется для передачи сообщения.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(N\) и \(K\).

Следующая строка содержит \(N\) разделённых пробелом целых чисел \(b_1,b_2,\ldots,b_N\).

Следующие \(K\) строк описывают матрицу \(S\). Каждая строка состоит из строки из K бит. \(S_{ij}\) \(j\)-ый бит \(i\)-ой строки сверху.

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите одно целое число - минимальное количество требуемого времени. Если невозможно передать сообщение от коровы \(1\) к корове \(N\), выведите \(-1\).

Ферма Джона состоит из множества \(N\) полей \((1 \leq N \leq 10^5)\), последовательно пронумерованных \(1 \ldots N\). Между этими полями имеется \(M\) двунаправленных дорожек \((0 \leq M \leq 10^5)\), соединяющих пары полей.

На этой ферме имеется два амбара - один в поле \(1\), другой в поле \(N\). ФД хочет быть уверен, что имеется путь между двумя амбарами последовательностью дорожек. Оно готов построить до двух новых дорожек, чтобы добиться своей цели. Стоимость построения дорожки между полями \(i\) и \(j\) есть \((i-j)^2\).

Помогите ФД определить минимальную стоимость сделать так, чтобы амбары \(1\) и \(N\) стали достижимы друг для друга.

ФОРМКАТ ВВОДА (с клавиатуры / stdin):

Каждый входной тест содержит \(T\) под тестов (\(1\le T\le 20\)), все из которых должны быть решены правильно, чтобы пройти этот тест.

Первая строка ввода содержит \(T\), за которым следуют \(T\) подтестов.

Каждый подтест начинается с двух целых чисел \(N\) и \(M\). Каждая из последующих \(M\) строк содержит два целых числа \(i\) и \(j\), означающих путь между двумя различными полями \(i\) и \(j\). Гарантируется, что имеется не более одного пути между любыми двумя полями. и что сумма \(N+M\) для всех подтестов не более \(5 \cdot 10^5\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите \(T\) строк. \(i\)-ая строка должна содержать одно целое число, минимальную стоимость для \(i\)-го подтеста.

У Фермера Джона длинная ферма вдоль скоростной дороги, которую можно рассматривать как числовую прямую. Вдоль фермы имеется \(K\) травяных пастбищ \(1 \leq K \leq 2\cdot 10^5\)); \(i\)-ое пастбище расположено в позиции \(p_i\) и имеет величину вкусности \(t_i\) (\(0\le t_i\le 10^9\)). Фермер Нхой уже расположил свои \(M\) коров (\(1 \leq M \leq 2\cdot 10^5\)) в позициях \(f_1 \ldots f_M\). Все \(K+M\) этих чисел различны и находятся в интервале \([0,10^9]\).

ФД хочет выбрать \(N\) (\(1\le N\le 2\cdot 10^5\)) (не обязательно в целых числах) для размещения своих коров. Эти числа должны отличаться от позиций занимаемых коровами ФН, но они могут находится в позициях травяных пастбищ.

Корова какого фермера находится ближе к травяному пастбищу, тот и объявляется собственником этого пастбища. Если коровы обоих фремеров находятся на одинаковом расстоянии от пастбища, то оно объявляется принадлежащим ФН.

По заданным позициям коров ФН и вкусностям пастбищ определите максимальную вкусность суммарную, которой может добиться ФД оптимальным размещением своих коров.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(K\), \(M\), \(N\).

Каждая из последующих \(K\) строк содержит два разделённых пробелом целых числа \(p_i\) и \(t_i\).

Каждая из последующих \(M\) строк содержит \(f_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Одно целое число, максимальную суммарную вкусность. заметим, что ответ может превысить 32-битное целое число, поэтому нужно использовать 64-битное, например long long в С++.

Paired Up#90125
Имеется \(N\) (\(1\le N\le 10^5\)) коров на числовой прямой. Расположение \(i\)-ой коровы задано числом \(x_i\) (\(0 \leq x_i \leq 10^9\)), а вес \(i\)-ой коровы задан числом \(y_i\) (\(1 \leq y_i \leq 10^4\)).

По сигналу Фермера Джона некоторые из коров формируют пары так, что

  • Каждая пара состоит из двух различных коров \(a\) и \(b\) чьи расположения не далее \(K\) друг от друга (\(1\le K\le 10^9\)); то есть \(|x_a-x_b|\le K\).
  • Каждая корова или является частью некоторой пары или не является частью некоторой пары.
  • Группировка в пары называется максимальной, если никакие две из неспаренных коров не могут образовать пары.

    Определите интервал возможных сумм весов неспаренных коров. А именно

    • Если \(T=1\), вычислите минимально возможную сумму весов неспаренных коров.
    • Если \(T=2\), вычислите максимально возможную сумму весов неспаренных коров.

    ФОРМАТ ВВОДА (с клавиатуры / stdin):

    Первая строка ввода содержит \(T\), \(N\), \(K\).

    В каждой из последующих \(N\) строк \(i\)-ая строка содержит \(x_i\) и \(y_i\). Гарантируется, что \(0\le x_1< x_2< \cdots< x_N\le 10^9\)

    ФОРМАТ ВЫВОДА (на экран / stdout):

    Выведите минимальную или максимальную возможные суммы весов неспаренных коров.

Корова Беси идёт с любимого пастбища в амбар.

Пастбище и амбар расположены на решётке \(N \times N\) (\(2 \leq N \leq 50\)), причём пастбище находится в левом верхнем углу, а амбар - в правом нижнем. Беси хочет попасть в амбар как можно быстрее, поэтому она ходит только вниз и вправо. В некоторых ячейках находятся стоги сена, которые Беси должна обходить.

Беси чувствует себя уставшей, поэтому она хочет изменить направление движения не более \(K\) раз (\(1 \leq K \leq 3\)).

Сколько различных путей имеется у Беси из пастбища в амбар? Два пути считаются различными, если Беси идёт через некоторую ячейку в одном пути и не идёт через неё в другом.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Ввод для каждого теста содержит \(T\) подтестов, каждый из которых описывает различную ферму и для каждого из которых нужно выдать правильный ответ, чтобы получить полный балл за тест. Первая строка ввода содержит \(T\) (\(1 \leq T \leq 50\)). Далее описывается каждый из под-тестов.

Каждый из под-тестов начинается со строки, содержащей \(N\) и \(K\).

Каждая из последующих \(N\) строк содержит строку из \(N\) символов. Каждый символ либо \(\texttt{.}\) если ячейка пуста, или \(\texttt{H}\) если в ячейке стог сена. Гарантируется, что левый верхний и правый нижний углы фермы не содержат стоги сена.

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите \(T\) строк, \(i\)-ая тсрока содержит количество различных путей, которыми может пройти Беси для \(i\)-го подтеста.

Фермер Джон недавно закупил \(N\) коров \((3 \le N \le 5 \times 10^5)\), каждая из которых имеет породу Guernsey или Holstein.

Эти коровы сейчас стоят в ряд и ФД хочет сделать фото каждой последовательности из трёх или более последовательных коров. Однако он не хочет делать фото, в котором ровно одна корова породы Guernsey или ровно одна корова породы Holstein --- он считает, что эта одна корова будет чувствовать себя изолированной. После взятия фото каждой последовательности из трёх или более коров, он выбрасывает так называемые "одинокие" фото, на которых ровно одна корова породы Guernsey или ровно одна корова породы Holstein.

По заданному порядку коров, помогите ФД определить, сколько "одиноких" фото он выбросит. Два фото считаются различными, если они начинаются или заканчиваются на различных коровах в ряду.

Формат ввода (с клавиатуры / stdin):

Первая строка ввода содержит \(N\).

Вторая строка содержит строку из \(N\) символов. \(i\)-ый символ есть G если соответствующая корова имеет породу Guernsey, и H, если соответствующая корова имеет породу Holstein.

Формат вывода (на экран / stdout):

Выведите количество фотографий, которые ФД выбросит.

\(N\) коров очень чувствительны к температуре в амбаре. Некоторые любят температуру похолоднее, а другие - потеплее.

Амабар Фермера Джона содержит последовательность из \(N\) стойл, пронумерованных \(1 \ldots N\), каждое содержит ровно одну корову. \(i\)-ая корова предпочитает, чтобы температура в её стойле была \(p_i\), а прямо сейчас температура в её стойле \(t_i\). Для того чтобы угодить всем коровам, ФД установил новую систему кондиционирования, которая работает следующим образом. ФД посылает команды системе - увеличить или уменьшить температуру в некоторых подряд идущих стойлах на 1 (например, увеличить на 1 температуру в стойлах \(5 \ldots 8\)). Последовательность стойл может состоять из одного стойла.

Помогите ФД определить минимальное количество команд, которые должен применить ФД, чтобы сделать желаемой температуру в стойле для каждой коровы.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка ввода содержит \(N\). Следующая строка содержит \(N\) неотрицательных целых чисел \(p_1 \ldots p_N\), разделённых одиночными пробелами. Финальная строка содержит \(N\) неотрицательных целых чисел \(t_1 \ldots t_N\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите одно целое число - минимальное количество команд, которое может использовать ФД.

У Фермера Джона есть маленькое поле в виде решётки \(N\) by \(N\) (\(1 \le N \le 2000\)). Где \(j\)-ый квадрат слева в \(i\)-ой строке сверху обозначается \((i,j)\) для всех \(1 \le i,j \le N\). ФД хочет посадить на своём поле пшеницу и люцерну, а для их поливки установить специальные разбрызгиватели.

Разбрызгиватель для пшеницы в квадрате \((I,J)\) разбрызгивает на все квадраты ниже и слева: то есть, квадраты \((i,j)\) с \(I \le i\) и \(j \le J\).

Разбрызгиватель для люцерны в квадрате \((I,J)\) разбрызгивает на все квадраты вверху и справа: то есть, квадраты \((i,j)\) с \(i \le I\) b \(J \le j\).

На квадрате до которого достаёт один или более разбрызгиватель для пшеницы может расти пшеница, на квадрате до которого достаёт один или более разбрызгиватель для люцерны может расти люцерна. На квадрате, до которого достают оба типа разбрызгивателей (или ни одного типа разбрызгивателей) не может расти ничего.

Помогите ФД определить количество способов (по модулю \(10^9 + 7\)) установить разбрызгиватели на своём поле, не более одного на квадрат, так, что каждый квадрат будет доставаться только одним типом разбрызгивателя (каждый квадрат будет фертильным).

Некоторые квадраты уже занят коровами, это не запрещает квадрату быть фертильным, но в них не могут быть установлены разбрызгиватели.

ФОРМАТ ВВОДА (файл sprinklers2.in):

Первая строка ввода содержит одно целое число \(N.\)

Для каждого h \(1\le i\le N,\) \(i+1\)-ая строка содержит строку длиной \(N\) обозначающую \(i\)-ую строку решётки. Каждый символ строки один из следующих: 'W' (корова), или '.' (свободный квадрат).

ФОРМАТ ВЫВОДА (файл sprinklers2.out):

Выведите остаток отделения на \(10^9+7\) количества способов установить разбрызгиватели.

Circus#90117
\(N\) коров из цирка Фермера Джона (\(1 \leq N \leq 10^5\)) готовят своё представление. Оно будет происходить на дереве с вершинами помеченными \(1\ldots N\). "Стартовое состояние" представления определяется числом \(1 \leq K \leq N\) и назначением коров \(1\dots K\) вершинам на дереве так, что никакие две коровы не размещаются в одной и той же вершине.

Во время представления коровы выполняют произвольно большое количество "шагов". Во время "шага" корова перемещается из своей текущей вершины в соседнюю незанятую вершину. Два стартовых состояния называются эквивалентными, если одно из них может быть достигнуто из другого некоторой последовательностью шагов.

Для каждого \(1 \leq K \leq N\), помогите коровам определить количество классов эквивалентности стартовых состояний: то есть максимальное количество стартовых состояний, которое они могут выбрать, так что никакие два из них не будут эквивалентными. Поскольку эти числа могут быть очень большими, выведите их остатки по модулю \(10^9 + 7\).

ФОРМАТ ВВОДА (файл circus.in):

Строка \(1\) содержит \(N\).

каждая из строк \(2\le i\le N\) содержит да целых числа \(a_i\) и \(b_i\) обозначающих ребро в дереве между вершинами \(a_i\) и \(b_i\).

ФОРМАТ ВЫВОДА (файл circus.out):

Для кажого \(1\le i\le N,\) \(i\)-ая строка вывода должна содержать ответ для \(K=i\) по модулю \(10^9+7\).

Exercise#90114
Фермер Джон проводит утреннюю зарядку с коровами.

\(N\) коров (\(1\le N\le 10^4\)) стоят в ряд. \(i\)-ая корова слева имеет метку \(i\) для каждого \(1\le i\le N\). ФД говорит коровам повторять следующие действия до тех пор, пока коровы не вернуться к тому же порядку, с которого начинали:

  • По заданной перестановке \(A\) длины \(N\), коровы изменяют их порядок так, что \(i\)-ая корова слева до изменения становится \(A_i\) коровой слева после изменения

Например, если \(A=(1,2,3,4,5)\) тогда коровы выполнят один шаг. Если \(A=(2,3,1,5,4)\), тогда коровы выполнят 6 шагов. Порядок коров слева направо после каждого из шагов будет таким:

  • 0 шаг: \((1,2,3,4,5)\)
  • 1 шаг: \((3,1,2,5,4)\)
  • 2 шаг: \((2,3,1,4,5)\)
  • 3 шаг: \((1,2,3,5,4)\)
  • 4 шаг: \((3,1,2,4,5)\)
  • 5 шаг: \((2,3,1,5,4)\)
  • 6 шаг: \((1,2,3,4,5)\)

Определите сумму всех положительных целых чисел \(K\) таких, что существует перестановка длины \(N\), которая требует от коров выполнить ровно \(K\) шагов.

Поскольку это число может быть очень большим, выведите ответ по модулю \(M\) (\(10^8\le M\le 10^9+7\), \(M\) - простое).

ФОРМАТ ВВОДА (файл exercise.in):

Первая строка содержит \(N\) и \(M\).

ФОРМАТ ВЫВОДА (файл exercise.out):

Одно целое число

Беси и её маленькая сестра Эльза собирают ягоды в саду Фермера Джона. В саду ФД имеется ровно \(N\) деревьев с ягодами (\(1\le N\le 1000\)); На дереве \(i\) висит ровно \(B_i\) ягод (\(1\le B_i\le 1000\)). У Беси есть ровно \(K\) корзин (\(1 \le K \le 1000\), \(K\) - чётное). Каждая корзина может содержать сколько Беси хочет ягод с одного дерева, но не может содержать ягоды с двух различных деревьев (поскольку вкусы ягод отрицательно влияют друг на друга). Корзины могут оставаться пустыми.

Беси хочет максимизировать количество ягод, которое она соберёт. Однако ФД хочет, чтоб Беси поделилась ягодами со своей младшей сестрой, поэтому Беси должна отдать Эльзе \(K/2\) корзин с наибольшим количеством ягод. Это значит, что у Эльзы может даже оказаться больше ягод чем у Беси.

Помогите Беси вычислить максимальное количество ягод, которое она может получить после делёжки.

SCORING:

  • Тесты 1-4 удовлетворяют условию \(K\le 10.\)
  • Тесты 5-11 не имеют дополнительных ограничений.

ФОРМАТ ВВОДА (файл berries.in):

Первая строка ввода содержит два разделённых пробелом целых числа \(N\) и \(K\).

Вторая строка содержит \(N\) разделённых одиночными пробелами целых чисел \(B_1,B_2,\ldots,B_N.\)

ФОРМАТ ВЫВОДА (файл berries.out):

Одна строка с ответом.

Беси работает над эссе. Поскольку пишет она некрасиво, она решила набрать эссе в текстовом процессоре.

Эссе содержит \(N\) слов (\(1\le N\le 100\)), разделённых пробелами. Каждое слово имеет длину от 1 до 15 символов включительно, и состоит только из больших или маленьких латинских букв. В соответствии с правилами, эссе должно быть отформатировано специфическим образом: каждая строк должна содержать не более \(K\) (\(1\le K\le 80\)) символов, не считая пробелы. К счастью, текстовый процессор Беси может выполнять это требование при использовании следующей стратегии:

  • Если Беси пишет слово которое может поместится на текущей строке, оно помещается в эту строку.
  • Иначе надо переместить слово в следующую строку и продолжить пополнение этой следующей строки.

Конечно, последовательные слова в одной строке должны быть разделены ровно одним пробелом. Не должно быть пробелов в конце любой строки.

К несчастью, текстовый процессор Беси сломался, помогите ей отформатировать её эссе в соответствии с вышеописанными правилами.

ФОРМАТ ВВОДА (файл word.in):

Первая строка ввода содержит два разделённых пробелом целых числа \(N\) и \(K.\)

Следующая строка содержит \(N\) слов, разделённых одиночными пробелами. Никакое слово не будет длиннее, чем \(K\) символов - максимальное количество символов в одной строке.

ФОРМАТ ВЫВОДА (файл word.out):

Отформатированное корректно эссе Беси.

Race#90103
Беси участвует в гонке длиной \(K\) (\(1\le K\le 10^9\)) метров. Она начинает бежать со скоростью 0 метров в секунду. Каждую секунду она может увеличить свою скорость на 1 метр в секунду, оставить скорость неизменной или уменьшить скорость на 1 метр в секунду. Например, в первую секунду она может увеличить скорость на 1 метр в секунду и пробежать за эту секунду 1 метр, или оставить скорость - метров в секунду и пробежать 0 метров. Беси не может сделать свою скорость меньше нуля.

Беси всегда бежит к финишу и хочет финишировать после целого количества секунд. Кроме того, она не хочет прибежать слишком быстро, поэтому на финише её скорость не может превысить \(X\) (\(1 \leq X \leq 10^5\)) метров в секунду. Беси хочет узнать, как быстро она сможет закончить гонку для \(N\) (\(1 \leq N \leq 1000\)) различных величин \(X\).

ОЦЕНИВАНИЕ:

  • Тесты 2-4 удовлетворяют \(N=X=1.\)
  • тесты 5-10 не имеют дополнительных ограничений.

ФОРМАТ ВВОДА (файл race.in):

Первая строка содержит два целых числа \(K\) и \(N\).

Каждая из следующих \(N\) строк содержит одно целое число \(X\).

ФОРМАТ ВЫВОДА (файл race.out):

Выведите \(N\) строк, каждая из них должна содержать одно целое число - минимальное количество времени, которое требуется Беси, чтобы пробежать \(K\) метров и финишировать со скоростью меньше либо равной \(X\).

Фермер Джон выстроил \(N\) своих коров (\(2\le N\le 10^3\)), пронумерованных \(1\ldots N\), для фотоснимка. Изначально ФД планировал, что \(i\)-ая корова слева будет корова с номером \(a_i,\) и выписал перестановку \(a_1,a_2,\ldots,a_N\) на листке бумаги. К несчастью этот листок украл фермер Нхож.

Однако, ФД сможет восстановить перестановку, которую он изначально выписал. Перед тем, как листок с перестановкой был украден, Беси выписала последовательность \(b_1,b_2,\ldots,b_{N-1}\) такую, что \(b_i=a_i+a_{i+1}\) для всех \(1\le i<N.\)

Основываясь на информации от Беси, помогите ФД восстановить "лексикографически минимальную" перестановку \(a\), которая может произвести \(b\). Перестановка \(x\) лексикографически меньше перестановки \(y\), если для некоторого \(j\), \(x_i=y_i\) для всех \(i<j\) и \(x_j<y_j\) (другими словами, две перестановки идентичны до определённой точки, в которой \(x\) меньше чем \(y\)). Гарантируется, что существует как минимум одна такая перестановка \(a\)

ОЦЕНИВАНИЕ:

  • Тесты 2-4 удовлетворяют \(N\le 8.\)
  • Тесты 5-10 не имеют дополнительных ограничений.

ФОРМАТ ВВОДА (файл photo.in):

Первая строка содержит одно целое число \(N.\)

Вторая строка содержит \(N-1\) разделённых одиночными пробелами целых чисел \(b_1,b_2,\ldots,b_{N-1}.\)

ФОРМАТ ВЫВОДА (файл photo.out):

Одна строка с \(N\) разделёнными одиночными пробелами целых чисел \(a_1,a_2,\ldots,a_{N}.\)

Ферма Джона состоит из \(N\) пастбищ (\(1 \leq N \leq 10^5\)), соединённых \(N-1\) дорогой, так что любое пастбище достижимо из любого другого. То есть ферма представляет собой дерево.

ФД хочет разбить множество дорог на несколько путей. Его не беспокоит количество путей. Однако он хочет чтобы все эти пути максимально возможными.

Помогите ФД определить максимальное положительное целое \(K\) такое, что дороги могут быть разделены на пути длины не менее \(K\).

ОЦЕНИВАНИЕ:

  • В тестах 2-4 дерево формирует звезду; не более чем одна вершина имеет степень больше чем 2.
  • В тестах 5-8 \(N\le 10^3\).
  • В тестах 9-15 нет дополнительных ограничений.

ФОРМАТ ВВОДА (файл deleg.in):

Первая строка содержит \(N\).

Каждая из следующих \(N-1\) строк содержит по два целых числа \(a\) и \(b\), описывающих ребро между вершинами \(a\) и \(b\). Оба числа \(a\) и \(b\) в интервале \(1 \ldots N\).

ФОРМАТ ВЫВОДА (файл deleg.out):

Выведите \(K\).

Беси дали \(N\) отрезков (\(1\le N\le 10^5\))и одну прямую. \(i\)-ый отрезок содержит все вещественные числа \(x\) такие, что \(l_i\le x\le r_i\).

Определите объединение отрезов, которое будет множеством всех \(x\) которые содержатся внутри хотя бы одного отрезка. также определите сложность множества отрезков как количество связанных отрезков, представленных в этом объединении.

Беси хочет вычислить сумму сложностей во всем \(2^N\) подмножествам заданного множества из \(N\) отрезков по модулю \(10^9+7\).

Помогите Беси!

ОЦЕНИВАНИЕ:

  • В тестах 2-3 \(N\le 16\).
  • В тестах 4-7 \(N\le 1000\).
  • В тестах 8-12 нет дополнительных ограничений.

ФОРМАТ ВВОДА (файл help.in):

Первая строка содержит \(N\).

Каждая из следующих \(N\) строк содержит по два целых числа \(l_i\) и \(r_i\). Гарантируется, что \(l_i< r_i\) и все \(l_i,r_i\) различные целые числа в интервале \(1 \ldots 2N.\)

ФОРМАТ ВЫВОДА (файл help.out):

Выведите ответ по модулю \(10^9+7\).

Ферма Фермера Джона состоит из \(N\) пастбищ (\(1 \leq N \leq 10^5\)) соединённых \(N-1\) дорогами, так, что любое пастбище достижимо из любого пастбища. То есть ферма представляет собой дерево.

ФД планирует разделить множество дорог на несколько путей и делегировать ответственность за каждый путь специальному человеку. Чтобы избежать раздора, он хочет, чтобы все пути имели одинаковую длину. Он хочет узнать для каких длин существуют такие разбиения.

Более точно для каждого \(1 \leq K \leq N-1\), помогите ФД определить, могут ли дороги быть распределены на пути длиной ровно \(K\).

ОЦЕНИВАНИЕ:

  • В тестах 2-4 дерево образовывает звезду; не более одной вершины имеет степень более двух.
  • В тестах 5-8 \(N\le 10^3\).
  • В тестах 9-15 нет дополнительных ограничений.

ФОРМАТ ВВОДА (файл deleg.in):

Первая строка содержит целое число \(N\).

Каждая из следующих \(N-1\) строк содержит целые числа \(a\) и \(b\), описывающие ребро между вершинами \(a\) и \(b\). Все \(a\) и \(b\) в интервале \(1 \ldots N\).

ФОРМАТ ВЫВОДА (файл deleg.out):

Выведите битовую строку длины \(N-1.\) Для каждого \(1\le K\le N-1,\) \(K\)-ый бит строки слева равный 1 означает, что возможно разбиение ребер на пути длины ровно \(K\) и равный \(0\) в противном случае.

Фермер Джон занялся редактированием геномов. Как известно, геном может быть представлен строкой состоящей из символов 'A', 'C', 'G', 'T'. Максимальная длина строки генома, рассматриваемая ФД есть 10^5.

ФД начинает с одного генома и редактирует его, выполняя следующие шаги:

  1. Разделяет геном между каждыми двумя последовательными равными символами.
  2. Реверсирует каждую из полученных подстрок.
  3. Конкатенирует реверсированные подстроки в том же порядке.

Например, если ФД начинает с генома AGGCTTT, то он выполнит следующие шаги:

  1. Разделит между последовательными равными символами G и T получит AG | GCT | T | T.
  2. Реверсирует каждую подстроку, получит GA | TCG | T | T.
  3. Конкатенирует реверсированные подстроки, получит GATCGTT.

К несчастью, после редактирования генома компьютер ФД сломался, и ФД потерял последовательность генома, с которого он начинал. Более того, некоторые части отредактированного генома повредились, заменившись на знак '?'.

По заданной последовательности отредактированного генома помогите ФД определить количество возможностей для стартового генома по модулю \(10^9+7\).

ФОРМАТ ВВОДА: (с клавиатуры / stdin):

Непустая строка символов , где каждый символ один из A, G, C, T, ?.

ФОРМАТ ВЫВОДА: (на экран / stdout):

Количество возможных оригинальных геномов по модулю \(10^9+7\).

Поделиться
Класснуть