дп

80 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Сейчас \(3000\)-ый год,и Беси - первая корова в космосе. Во время своего путешествия между звёздами, она обнаружила числовую прямую с \(N\) (\(2 \leq N \leq 5 \cdot 10^5\)) точками, пронумерованными от \(1\) до \(N\). Все точки изначально белые. Она может выполнять следующую операцию любое количество раз.

  • Выбрать позицию \(i\) среди чисел на числовой прямой и положительное целое число \(x\). Затем покрасить все точки в интервале \([i, i + x - 1]\) в красный цвет и все точки в интервале \([i + x, i + 2x - 1]\) в синий цвет. Все выбранные интервалы должны быть не соединёнными (т.е. в интервале \([i, i + 2x - 1]\) не может быть точек ранее покрашенных в красный или синий цвет). Весь интервал должен попадать целиком в числовую прямую (т.е. \(1 \leq i \leq i + 2x - 1 \leq N\)).

Фермер Джон даёт Беси строку \(s\) длины \(N\), состоящую из символов \(R\), \(B\), \(X\). Строка представляет предпочитаемую ФД раскраску для каждой точки: \(s_i=R\) означает, что \(i\)-ая точка должна быть выкрашена в красный цвет, \(s_i = B\) означает, что \(i\)-ая точка должна быть выкрашена в синий цвет, а \(s_i = X\) означает, что нет ограничений на цвет \(i\)-ой точки.

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

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

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

Следующая строка содержит строку \(s\).

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

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

**Примечание. Ограничение по времени для этой задачи – 4 секунды, что в 2 раза больше, чем по умолчанию.**

Парейдолия – это явление, при котором ваши глаза склонны видеть в изображениях знакомые узоры, которых на самом деле не существует — например, видение лица в облаке. Поскольку фермер Джон постоянно находится рядом с коровами, он часто видит коровьи узоры в повседневных предметах. Например, если он смотрит на строка "bqessiyexbesszieb", глаза фермера Джона игнорируют некоторые буквы и все, что он видит, это «bessiebessie».

Дана строка \(s\), пусть \(B(s)\) представляет собой максимальное количество повторяющихся копий слова «bessie» которые можно получить, удалив ноль или более символов из \(s\). В приведенном выше примере \(B(\)"bqessiyexbesszieb"\() = 2\).

Вычисление \(B(s)\) – интересная задача, но фермеру Джону интересно решение еще более интересной задачи: дана строка длины \(t\) не более \(3\cdot 10^5\), состоящих только из символов a-z, вычислить сумму \(B(s)\) по всем непрерывным подстрокам \(s\) строки \(t\).

ФОРМАТ ВВОДА (ввод поступает с терминала/стандартного ввода):

Вход состоит из непустой строки длины не более \(3\cdot 10^5\), все символы являются строчными английскими буквами.

ФОРМАТ ВЫВОДА (вывод на терминал / стандартный вывод):

Выведите единственное число — общее количество слов «bessie», которое можно сделать во всех подстроках входной строки.

**Примечание. Ограничение по времени для этой задачи составляет 4 секунды, что в два раза больше, чем по умолчанию. Ограничение по памяти для этой задачи составляет 512 МБ, вдвое больше, чем по умолчанию.**

Парейдолия – это явление, при котором ваши глаза склонны видеть в изображениях знакомые узоры, которых на самом деле не существует — например, видение лица в облаке. Поскольку фермер Джон постоянно находится рядом с коровами, он часто видит коровьи узоры в повседневных предметах. Например, если он смотрит на строка "bqessiyexbesszieb", глаза фермера Джона игнорируют некоторые буквы и все, что он видит, это «bessiebessie».

Дана строка \(s\), пусть \(B(s)\) представляет собой максимальное количество повторяющихся копий. из «bessie» можно получить, удалив ноль или более символов из \(s\). В приведенном выше примере \(B(\)"bqessiyexbesszieb"\() = 2\). Кроме того, учитывая строка \(t\), пусть \(A(t)\) представляет собой сумму \(B(s)\) по всем непрерывным подстроки \(s\) строки \(t\).

У фермера Джона есть строка \(t\) длины не более \(2\cdot 10^5\), состоящая только из символов a-z. Пожалуйста, рассчитайте \(A(t)\) и как \(A(t)\) изменится после \(U\) (\(1\le U\le 2\cdot 10^5\)) обновлений, каждое из которых изменяет символ \(t\). Обновления являются кумулятивными.

ФОРМАТ ВВОДА (ввод поступает с терминала/стандартного ввода):

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

Следующая строка содержит \(U\), за которыми следуют строки по \(U\), каждая из которых содержит позицию \(p\) (\(1\le p\le N\)) и символ \(c\) в диапазоне от a до z, что означает, что \(p\)-й символ \(t\) заменяется на \(c\).

ФОРМАТ ВЫВОДА (вывод на терминал / стандартный вывод):

Выведите \(U+1\) строк — общее количество «bessie», которое можно сделать во всех подстроках \(t\) перед любыми обновлениями и после каждого обновления.

**Замечание: Время на тест для этой задачи 5s, в 2.5 больше чем по умолчанию. Ограничение по памяти в этой задаче 512MB, в два раза больше чем по умолчанию.**

У Беси есть \(N\) (\(1\le N\le 18\)) бассейнов маны, \(i\)-ый из которых аккумулирует \(m_i\) маны в секунду (\(1\le m_i\le 10^8\)). Бассейны соединены набором \(M\) (\(0\le M\le N(N-1)\)) двунаправленных ребер \((a_i,b_i,t_i)\), обозначающих, что из бассейна \(a_i\) она может перебраться в бассейн \(b_i\) за \(t_i\) секунд (\(1\le a_i, b_i\le N\), \(a_i\neq b_i\), \(1\le t_i\le 10^9\)). Когда Беси находится в бассейне, она может собрать все маны, сохранённые в этом бассейне, опустошая его. В момент времени \(0\) все бассейны с маной пусты. Беси может выбрать с какого бассейна стартовать.

Ответьте на \(Q\) (\(1\le Q\le 2\cdot 10^5\)) запросов, каждый указан двумя целыми числами \(s\) и \(e\) (\(1\le s\le 10^9\), \(1\le e\le N\)). Для каждого запроса определите максимальное количество маны, которую Беси может собрать за \(s\) секунд, оказавшись в бассейне \(e\) в конце \(s\)-ой секунды.

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

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

Следующая строка содержит \(m_1,m_2,\dots, m_N\).

Следующие \(M\) строк содержат \(a_i,b_i,t_i\). Никакая упорядоченная пара (ai,bi)$ не появится на вводе более одного раза.

Следующая строка содержит \(Q\).

Следующие \(Q\) содержат по два целых числа \(s\) и \(e\).

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

\(Q\) строк, по одной для каждого запроса

Фермер Джон выписал \(N\) (\(1\le N\le 300\)) цифр на кусках бумаги. Для каждого \(i\in [1,N]\), \(i\)-ый кусок бумаги содержит цифру \(a_i\) (\(1 \leq a_i \leq 9\)).

У коров есть два любимых целых числа \(A\) и \(B\) (\(1\le A\le B< 10^{18}\)) и они хотят, чтобы Вы ответили на \(Q\) (\(1\le Q\le 5\cdot 10^4\)) вопросов. Для \(i\)-го вопроса коровы должны идти слева направо по кускам бумаги \(l_i\dots r_i\) (\(1\le l_i\le r_i\le N\)), поддерживая изначально пустую кучу кусков бумаги. Для каждого куска бумаги, они или добавляют его в вершину кучи, или в дно кучи или никуда. В конце они читают цифры на кусках бумаги из кучи, сверху ко дну формируя целое число. Среди всех \(3^{r_i-l_i+1}\) способов для коров сделать выбор в этом процессе, посчитайте количество способов таких, что результат будет целым числом в интервале \([A,B]\) включительно и выведите это число по модулю \(10^9+7\).

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

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

Вторая строка содержит \(N\) разделённых одиночными пробелами цифр \(a_1, a_2, \dots, a_N\).

Третья строка содержит целое число \(Q\), количество запросов.

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

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

Для каждого запроса одна строка содержит ответ.

Имеется \(N\) пастбищ (\(2 \le N \le 2\cdot 10^5\)), соединённых \(N-1\) дорогой, так что ои образуют дерево. Перемещение по каждой дороге занимает одну секунду. В начале на каждом пастбище 0 травы, трава на \(i\)-ом пастбище растёт со скоростью \(a_i\) (\(1\le a_i\le 10^8\)) единиц в секунду. Фермер Джон вначале находится в пастбище 1 и должен удобрить траву на каждом пастбище. Если он посещает пастбище, в котором \(x\) единиц травы, он должен потратить \(x\) единиц удобрений. Удобрять требуется только при первом посещении пастбища и удобрение пастбища занимает 0 единиц времени.

Ввод содержит дополнительный параметр \(T\in \{0,1\}\).

  • Если \(T=0\), ФД должен завершить путь в пастбище 1.
  • Если \(T=1\), ФД может завершить путь в любом пастбище.

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

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

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

Затем для каждого \(i\) от \(2\) до \(N\), имеется строка содержащая \(p_i\) и \(a_i\), означающая что есть дорога соединяющая пастбища \(p_i\) и \(i\). Гарантируется, что \(1\le p_i<i\).

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

Минимальное количество времени и минимальное количество удобрений, разделённые одиночным пробелом.

У Фермера Джона имеется \(N\) коров (\(2 \leq N \leq 3\cdot 10^5\)), последовательно пронумерованных 1 \ldots N$, упорядоченных в соответствии с перестановкой \(p_1,p_2,\ldots,p_N\) of \(1\ldots N\). Также дана строка длины \(N-1\), состоящая из символов U и D.

Определите максимальное \(K\le N-1\) такое, что существует подпоследовательность subsequence \(a_0,a_1,\ldots,a_{K}\) чисел \(p\) таких, что для всех \(1\le j\le K\), \(a_{j - 1} < a_j\) если j-ый символ в строке есть U, и \(a_{j - 1} > a_j\), если \(j\)-ый символ в строке есть D.

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

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

Вторая строка содержит перестановку \(p_1,p_2,\ldots,p_N\).

Последняя строка содержит строку.

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

Выведите максимально возможное значение \(K\).

Revisited#90182

Беси играет в такую игру. Игра начинается с последовательности из \(N\) (\(2\le N\le 262,144\)) положительных целых чисел \(a_1,a_2,\ldots,a_N\), каждое в интервале \(1\ldots 10^6\). За один ход Беси может взять два соседних числа и заменить их на число, большее, чем максимум из этих двух чисел (например, соседнюю пару \((5,7)\) на \(8\)). Игра заканчивается после \(N-1\) ходов, после которых остаётся только одно число. Цель игры - минимизировать это финальное число.

Ваша задача сыграть оптимально не только для \(a\), но и для всех непрерывных подпоследовательностей \(a\).

Выведите сумму минимально возможных финальных чисел для всех \(\frac{N(N+1)}{2}\) непрерывных подпоследовательностей \(a\).

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

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

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

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

Одна срока, содержащая сумму.

Беси играет в такую игру. Игра начинается с последовательности из \(N\) (\(2\le N\le 262,144\)) положительных целых чисел \(a_1,a_2,\ldots,a_N\), каждое в интервале \(1\ldots 10^6\). За один ход Беси может взять два соседних числа и заменить их на число, большее, чем максимум из этих двух чисел (например, соседнюю пару \((5,7)\) на \(8\)). Игра заканчивается после \(N-1\) ходов, после которых остаётся только одно число. Цель игры - минимизировать это финальное число.

Ваша задача сыграть оптимально не только для \(a\), но и для всех непрерывных подпоследовательностей \(a\).

Выведите сумму минимально возможных финальных чисел для всех \(\frac{N(N+1)}{2}\) непрерывных подпоследовательностей \(a\).

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

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

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

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

Одна срока, содержащая сумму.

Программа состоит из последовательности инструкций, каждая из которых имеет одну из следующих форм:

  1. \(\times d\), где \(d\) это цифра в интервале \([0,9]\)
  2. \(+s\), где \(s\) это строка, обозначающая имя переменной. В программе все переменные различны.

Результат выполнения программы определяется как выражение - результат выполнения всех инструкций в порядке ввода , начиная с \(0\). Например, результаты выполнения программы \([\times 3,+x,+y,\times 2,+z]\) есть выражение \((0\times 3+x+y)\times 2+z=2\times x+2\times y+z\). При выполнении различные программы могут формировать одни и те же выражения. Например, исполнение программы \([+w,\times 0,+y,+x,\times 2,+z, \times 1]\) также в результате даёт выражение \(2\times x+2\times y+z\).

У Беси и Эльзы есть по программе из \(N\) (\(1\le N\le 2000\)) инструкций. Они объединяют инструкции этих программ, чтобы получить новую программу длиной \(2N\). Заметим, что всего имеется \(\frac{(2N)!}{N!\times N!}\) способов объединить программы, но но не все из этих программ дадут различные результаты.

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

Каждый ввод состоит из \(T\) (\(1\le T\le 10\)) тестов, которые требуется решать независимо. Гарантируется, что сумма \(N\) во всех \(T\) тестах не превысит \(2000\).

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

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

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

Вторая строка каждого теста содержит программу Беси, представленную строкой длины \(N\). Каждый символ или цифра \(d\in [0,9]\), представляющая инструкцию типа 1, или символ \(+\), представляющий инструкцию типа 2.

Третья строка каждого теста содержит программу Эльзы, в том же формате как и у Беси.

Внутри теста, имена переменных среди всех инструкций различны. Заметим, что реальные имена не вводятся, поскольку они не влияют на результат.

ФОРМАТ ВЫВОДА (НА ЭКРАН / stdout):

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

Alchemy#90174
Беси изучает, как трансформируются металлы. У неё есть \(a_i\) (\(0 \le a_i \le 10^4\)) единиц металла \(i\) (\(1 \le i \le N \le 100\)). Беси знает \(K\) (\(1\le K<N\)) способов комбинирования одной единицы каждого из нескольких металлов, чтобы сделать одну единицу металла с большим номером, чем у всех исходных металлов. Гарантируется, что для каждого металла Беси знает не более одного способа комбинирования.

Вычислите максимальное количество единиц металла \(N\), которое может получить Беси после некоторой серии трансформаций.

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

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

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

Третья строка содержит целое число \(K\).

Каждая из последующих \(K\) строк начинается с двух целых чисел \(L\) и \(M\) (\(M\ge 1\)), за которыми следуют \(M\) целых чисел. Эти \(M\) чисел представляют металлы в способе комбинирования металлов, чтобы получить одну единицу металла \(L\). Гарантируется, что \(L\) больше чем каждое из этих \(M\) чисел.

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

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

У Фермера Джона есть \(N\) (\(1\leq N \leq 5000\)) стогов из тюков сена. Для каждого \(i\in [1,N]\), \(i\)-ый стог имеет высоту \(h_i\) (\(1\le h_i\le 10^9\)) тюков. Беси может выполнять следующую операцию:

  • Если высоты соседних стогов сена отличаются ровно на 1, она может переместить верхний тюк сена с более высокого стога на менее высокий.

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

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

Первая строка ввода содержит \(T\) (\(1\le T\le 10\)), количество независимых тестов каждый из которых должен быть решён правильно.

Каждый тест состоит из \(N\), и последовательности \(N\) высот. Гарантируется, что сумма всех \(N\) во всех \(T\) тестах не превысит \(5000\).

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

Выведите \(T\) строк по одной для каждого теста.

Беси купила новый телефон. Кнопки на нём расположены так:

123
456
789

Беси может нажимать одну клавишу, две клавиши одновременно (имеющие общую сторону, всего 12 комбинаций), 4 клавиши одновременно, которые формируют квадрат (1245, 2356, 4578, or 5689).

Например, если телефонный номер 123659874, она может сэкономить время следующим образом:

  1. Нажать 1 и 2 одновременно.
  2. Нажать 3.
  3. Нажать 6, 5, 9, 8 одноврменно.
  4. Нажать 7 и 4 одновременно.

Однако при нажатии нескольких клавиш одновременно, цифры могут могут записаться в произвольном порядке. Например, после последнего нажатия (7 и 4 одновременно) может получиться 123596847 или 213659874

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

**Замечание: Время на тест для этой задачи 4s, в два раза больше чем обычно..**

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

Первая строка содержит \(T\) (\(1\le T\le 10\)), количество независимых тестов.

Каждая из последующих \(T\) строк содержит непустую строку цифр от 1 до 9. Гарантируется, что длина этой строки не превысит \(10^5\).

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

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

У Фермера Джона есть \(N\) подарков помеченных числами \(1\ldots N\) для его \(N\) коров, также помеченных числами \(1\ldots N\) (\(1\le N\le 18\)) Каждая корова имеет список предпочтений, который представляет собой перестановку из всех \(N\) подарков, так что корова предпочитает подарок, который появился в списке раньше подарку, который появился в списке позже.

ФД по лени просто назначил корове \(i\) подарок \(i\) для всех \(i\). Теперь коровы собрались и решили переназначить подарки так, чтобы у каждой коровы либо остался изначальный подарок, либо он был заменён на более предпочитаемый подарок.

Имеется также дополнительное ограничение: подарок может быть переназначен корове, если он изначально был назначен корове такого же типа (Holstein или Guernsey)). Задано \(Q\) (\(1\le Q\le \min(10^5,2^N)\))длин \(N\) строк пород для каждой из них вычислите количество переназначений, соответствующих ей.

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

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

Каждая из следующих \(N\) строк содержит список предпочтений одной коровы. Гарантируется, что каждая строка является перестановкой \(1\dots N\).

Следующая строка содержит \(Q\).

Каждая из последующих \(Q\) строк содержит строку пород, каждая имеет \(N\) символов длину и состоит только из символов G и H. Никакая из строк пород не появится более одного раза.

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

Для каждой строки пород выведите количество перестановок, соответствующих ей на отдельной строке.

\(N\) (\(1 \le N \le 7500\)) коров Фермера Джона выстроились в ряд для фотографирования.

Коровы хотят, чтобы ФД сделал \(\frac{N(N+1)}{2}\) групповых фоток по одной для каждой непрерывной подпоследовательности коров.

Однако ФД имеет свои соображения как выстроить коров. В частности, он отказывается делать фотку подпоследовательности коров, если она не формирует палиндром, это означает, что порода \(i\)-ой коровы от левого конца фотки должна совпадать с породой \(i\)-ой коровы от начала фотки, для всех положительных \(i\) меньше либо равных длины подпоследовательности. Каждая корова имеет породу Guernsey или Holstein.

Для каждой из \(\frac{N(N+1)}{2}\) непрерывных подпоследовательностей построения посчитайте минимальное количество транспозиций, с помощью которых можно реорганизовать эту подпоследовательность в палиндром или \(-1\), если это сделать невозможно. Одна транспозиция заключается во взятии двух соседних коров подпоследовательности и обмене их. Вывод - сумма всех таких количеств.

Заметим, что количество транспозиций необходимо вычислить независимо для каждой непрерывной подпоследовательности (коровы возвращаются на начальные позиции между фотками).

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

Ряд представленный из символов G и H длины \(N\).

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

Сумма вышеописанных количеств по всем \(\frac{N(N+1)}{2}\) непрерывным подпоследовательностям.

Breakdown#90144
**Обратите внимание: время на тест для этой задачи 3сек, на 50% больше чем по умолчанию. **

Ферма Джона может быть представлена как ориентированный взвешенный граф, с дорогами (дугами), соединяющими различные вершины и вес каждой дуги есть время, которое требуется чтобы проехать по этой дороге. Каждый день Беси любит путешествовать из амбара (вершина \(1\)) в поле (вершина \(N\)), используя ровно \(K\) дорог и хочет добраться до поля как можно быстрее при этих ограничениях. Однако, в некоторой точке, прекращается поддержка дорог и они начинают ломаться одна за другой, становясь непроходимыми. Помогите Беси определить кратчайший путь от амбара до поля во все моменты времени.

Формально, мы начинаем с полного взвешенного ориентированного графа из \(N\) вершин (\(1\le N\le 300\)) и \(N^2\) дуг: одна дуга для каждой пары \((i, j)\) \(1 \le i, j \le N\), заметим, что имеется \(N\) петель (дуг из \(i\) в \(i\)). После каждого удаления выведите минимальный вес из всех путей из \(1\) в \(N\), проходящих ровно \(K\) (необязательно различных) дуг \(2\le K\le 8\)). Заметим, что после \(i\)-го удаленя в графе остаётся \(N^2-i\) дуг.

Вес пути определяется как сумма весов всех дуг в пути. Заметим, что путь может содержать множество вхождений одних и тех же дуг, и одних и тех же вершин, включая \(1\) и \(N\).

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

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

Следющие \(N\) строк содержат по \(N\) целых чисел каждая. \(j\)-ое целое \(i\)-ой строки есть \(w_{ij}\) (\(1\le w_{ij}\le 10^8\)).

Затем следуют \(N^2\) дополнительных строк, каждая содержит два целых числа \(i\) и \(j\) (\(1\le i,j\le N\)). Каждая пара целых чисел появляется ровно один раз.

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

Ровно \(N^2\) строк, минимальный вес \(K\)-пути после каждого удаления. Если \(K\)-путь не существует, выведите \(-1\).

Беси хочет посмотреть Bovine Genomics: The Documentary, но она не хочет идти одна. К сожалению, её друзья не очень хотят идти с ней. Ей нужно чем то их привлечь. У неё есть два инструмента : mooney и мороженое.

У Беси \(N\) (\(1 \le N \le 2000\)) друзей. Однако они разные! Друг \(i\) имеет счёт популярности \(P_i\) (\(1 \le P_i \le 2000\)), и Беси хочет максимизировать сумму популярности друзей, которые пойдут с ней. Друг \(i\) пойдёт с ней только если она даст ему \(C_i\) (\(1 \le C_i \le 2000\)) "moonies". Друг \(i\) также может сделать скидку в \(1\) "mooney", если она даст ему \(X_i\) (\(1 \le X_i \le 2000\)) мороженых. Беси может получить сколько угодно скидок.

У Беси есть \(A\) moonies и \(B\) мороженых (\(0 \le A, B \le 2000\)). Помогите ей определить максимальную сумму популярностей, которую она может добиться, если потратит mooney и мороженое оптмально.

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

Строка \(1\) содержит три числа \(N\), \(A\), \(B\), представляющих количества друзей, mooney и мороженых, которые есть у Беси соответственно.

Каждая из последующих \(N\) строк содержит три числа \(P_i\), \(C_i\), \(X_i\), представляющих популярность (\(P_i\)), mooney, за которые он согласится пойти, количество мороженых для скидки в \(1\) mooney для друга \(i\) (\(X_i\)).

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

Выведите максимальную сумму популярностей друзей Беси, в предположении что она оптимально потратит moonie и мороженые.

Коровы Фермера Джона танцуют.

Сначала все \(N\) коров (\(2\le N\le 10^5\)) стоят в ряд, корова \(i\) стоит на позиции \(i\). Последовательность перемещений в танце задаётся \(K\) (\(1\le K\le 2\cdot 10^5\)) парами позиций \((a_1,b_1), (a_2,b_2), \ldots, (a_{K},b_{K})\). В каждую минуту \(i = 1 \ldots K\) танца, коровы в позициях \(a_i\) и \(b_i\) меняются позициями. Аналогичные \(K\) обменов произойдут в минуты \(K+1 \ldots 2K\), затем в минуты \(2K+1 \ldots 3K\), и т.д. до истечения \(M\) минут (\(1\le M\le 10^{18}\)) Другими словами

  • В минуту \(1\), коровы в позициях \(a_1\) и \(b_1\) меняются позициями.
  • В минуту \(2\), коровы в позициях \(a_2\) и \(b_2\) меняются позициями.
  • ...
  • В минуту \(K\), коровы в позициях \(a_{K}\) и \(b_{K}\) меняются позициями.
  • В минуту \(K+1\), коровы в позициях \(a_{1}\) и \(b_{1}\) меняются позициями.
  • В минуту \(K+2\), коровы в позициях \(a_{2}\) и \(b_{2}\) меняются позициями.
  • и т.д. ...

Для каждой коровы определите количество уникальных позиций, которые она занимала во время танца.

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

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

Первая строка содержит целые числа \(N\), \(K\), \(M\). Каждая из последующих \(K\) строк содержит \((a_1,b_1) \ldots (a_K, b_K)\) (\(1\le a_i<b_i\le N\)).

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

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

Paired Up#90127
\(N\) (\(1\le N\le 5000\)) коров стоят в ряд на прямой, каждая из них имеет породу Holstein или Guernsey. Порода \(i\)-ой коровы задаётся значением \(b_i\in \{H,G\}\), Положение \(i\)-ой коровы задаётся величиной \(x_i\) (\(0 \leq x_i \leq 10^9\)), а вес \(i\)-ой коровы задаётся величиной \(y_i\) (\(1 \leq y_i \leq 10^5\)).

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

  • Каждая пара состоит из коров пород Holstein \(h\) и Guernsey \(g\) чьи положения не более чем на \(K\) друг от друга (\(1\le K\le 10^9\)); то есть, \(|x_h-x_g|\le K\).
  • Каждая корова или часть какой то пары, или не входит ни в какую пару.
  • Разбиение на пары является максимальным если никакие из оставшихся коров не могут образовать пару.

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

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

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

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

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

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

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

HILO#90126
Беси знает число \(x+0.5\), где \(x\) некоторое целое число между \(0\) и \(N\), включительно (\(1\le N\le 5000\)).

Эльза старается угадать это число. Она может задавать вопросы вида \(i\) больше или меньше?" для некоторого \(i\) от \(1\) до \(N\) включительно. Беси отвечает "HI!" если \(i\) больше чем \(x+0.5\), и "LO!", если \(i\) меньше чем \(x+0.5\).

Эльза работает в соответствии со следующей стратегией. Она создала список из \(N\) чисел, где каждое число от \(1\) до \(N\) встречается ровно один раз (другими словами, этот список является перестановкой размера \(N\).). Затем она идёт по этому списку называя числа для угадывания из него по порядку. Однако она пропускает все бесполезные запросы. Так если Эльза должна спросить число \(i\) а ранее она спрашивала число \(j < i\) такое, что Беси ответила "HI!", Эльза не спрашивает \(i\), а переходит к следующему числу в списке. Аналогично, если она ранее спрашивала про число \(j > i\), на которое Беси ответила "LO!", Эльза также пропускает это число \(i\) и переходит к следующему в списке. Можно доказать, что используя эту стратегию, Эльзая всегда уникально определит \(x\) вне зависимости от перестановки, которую она создаст.

Если мы сконкатенируем все ответы Беси "HI" или "LO" в одну строку \(S\), количество раз которое Беси ответит "HILO" есть количество подстрок длины \(4\) в строке \(S\), которые равны "HILO".

Беси знает, что Эльза использует эту стратегию и даже уже выбрала число \(x\), однако она не знает, какую перестановку использует Эльза. Ваша задача - вычислить сумму количеств раз, которые Беси скажет "HILO" для всех перестановок, которые Эльза может использовать - по модулю \(10^9+7\).

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

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

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

Общее количество подстрок HILO по модулю \(10^9+7\).

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