Информатика

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

Беси рассматривает решётку \(N \times N\) ячеек, где каждая ячейка имеет высоту. Каждая ячейка вне этой решётки считается имеющей бесконечную высоту.

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

Более формально:

  • Множество ячеек называется "смежными с торцевой", если можно достичь любую ячейку этого множества из любой двигаясь вправо, влево, вверх, вниз.
  • Множество ячеек называется "точечно-смежным" если можно из любой ячейки множества достичь любой другой ячейки множества, двигаясь, влево, вправо, вверх, вниз или по диагонали.
  • Регион - это непустое множество ячеек "смежных с торцевой".
  • Регион называется дырявым, если дополнение региона (которое включает бесконечные ячейки вне решётки) не является "точечно-смежным".
  • Граница региона - это множество ячеек, ортогонально соседних (вверх, вниз, влево, вправо) к некоторой ячейке региона, но не принадлежащих региону.
  • "Долина" это любой недырявый регион, в котором каждая ячейка имеет высоту ниже чем каждая ячейка границы долины.

Цель Беси - определить сумму размеров всех долин.

Примеры

Это регион:

oo.
ooo
..o

Это не регион (средняя ячейка и нижняя правая ячейка не являются "смежными с торцевой"):

oo.
oo.
..o

Это регион без дыр:

ooo
o..
o..

Это дырявый регион (одна ячейка внутри):

ooo
o.o
ooo

Это другой недырявый регион (центральная ячейка является точечно-смежной с ячейкой в правом нижнем углу):

ooo
o.o
oo.

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

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

Каждая из следующих \(N\) строк содержит \(N\) целых чисел - высоты ячеек решётки. Каждая высота \(h\) удовлетворяет \(1 \le h \le 10^6\). Все высоты различны.

в 19% тестов гарантируется \(N \leq 100\).

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

Выведите одно целое число, сумму размеров всех долин.

Беси с друзьями попала в ловушку и разрабатывает план побега. Ловушка состоит из \(NK\) ячеек, в виде прямоугольной решётки \(N \times K\). В каждой ячейке имеется проход между горизонтально и вертикально соседними ячейками. В каждой ячейке находится ровно одна корова.

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

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

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

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

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

Каждая из последующих \(N\) строк содержит \(K-1\) целое число - стоимости разблокирования каждого прохода в горизонтальном направлении.

Каждая из последующих \(K\) строк содержит \(N-1\) целое число - стоимости разблокирования каждого прохода в вертикальном направлении.

Все стоимости от \(1\) до \(10^9\) включительно.

В 20% тестов гарантируется, что \(N \leq 500\) и все веса от \(1\) до \(5\) включительно.

В других 20% тестов гарантируется \(N \leq 5000\).

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

Одно целое число - количество планов минимальной стоимости по модулю \(10^{9} + 7\).

На ферме пожар и коровы должны спасаться.

Ферма описывается решёткой \(10 \times 10\) символов:

..........
..........
..........
..B.......
..........
.....R....
..........
..........
.....L....
..........

Символ 'B' представляет амбар, который горит. Символ 'L' представляет озеро, символ 'R' представляет огромную скалу.

Коровы хотят сформировать "ведерную бригаду", разместившись вдоль пути между озером и амбаром так, чтобы они могли передавать друг другу воду для тушения пожара. Ведро может передаваться между коровами, если они являются непосредственными соседями в направлении "север", "юг", "запад", "восток". Аналогично корова может набирать воду из озера, если она аналогично соседствует с ним. Наконец корова может поливать амбар из ведра, только если она аналогично непосредственно соседствует с ним.

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

Корова не может находится в квадрате, содержащем скалу, амбар или озеро. Гарантируется, что они не будут соседними друг другу.

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

Входной файл содержит 10 строк, каждая по 10 символов, описывающих план фермы.

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

Выведите одно целое число - минимальное количество коров, требуемых для того, чтобы сформировать "ведерную бригаду".

Со своего пастбища Беси имеет прекрасный вид на горный горизонт. Имеется \(N\) гор (\(1 \leq N \leq 10^5\)). Каждая гора это треугольник, основание которого лежит на оси \(x\). Обе стороны горы наклонены под углом 45 градусов, поэтому пик горы - угол в 90 градусов. Гора \(i\) поэтому задаётся координатами \((x_i, y_i)\) её пика. Никакие две горы не имеют одно и то же расположение пика.

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

Определите количество различных пиков (и следовательно гор), которые Беси может увидеть.

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

Первая строка ввода содержит \(N\). Каждая из оставшихся \(N\) строк содержит \(x_i\) (\(0 \leq x_i \leq 10^9\)) и \(y_i\) (\(1 \leq y_i \leq 10^9\)) описывающих пики гор.

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

Выведите минимальное количество гор, которые Беси может различить.

Бовинополис состоит из ряда из \(N\) пастбищ (\(1 \leq N \leq 3 \cdot 10^5\)), Каждое из которых содержит одну корову типа Holstein или Guernsey.

Правительство Бовинополиса хочет разделить его на некоторое количество непрерывных районов так, чтобы каждый район содержал не более \(K\) пастбищ (\(1 \leq K \leq N\)), и каждое пастбище содержится ровно в одном районе. Поскольку сейчас правительство контролируется Holstein-ами, они хотят найти такой способ разделения на районы, который минимизирует количество районов, в которых коров Guernsey будет больше, чем коров Holstein или столько же сколько Holstein.

Оппозиционная коалиция Guernsey старается выяснить вред от такого переадминистрирования. Помогите им вычислить минимальное количество районов, в которых у Guernsey будет большинство или равенство.

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

Первая строка ввода содержит два разделённых пробелом целых числа \(N\) и \(K\). Вторая строка содержит строку символов длиной \(N\). Каждый символ 'H' или 'G', означающих Holstein или Guernsey, соответственно.

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

Выведите минимально возможное количество районов, в которых у Guernsey будет большинство или равенство.

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

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

Помогите Беси посчитать количество хороших маршрутов, которые она может использовать.

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

Первая строка ввода содержит \(N\) и \(M\). Каждая из следующих \(M\) строк содержит два целых числа \(a_i\) и \(b_i\) описывающих конечные точки тропинки. Первые N-1 из них - стандартные тропинки.

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

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

Беси хочет написать собственную поэму.

Беси знает \(N\) (\(1 \leq N \leq 5000\)) слов и хочет организовать их в поэму. Она определила длину в слогах каждого слова, кроме того она распределила их в "классы рифм". Каждое слово рифмуется только с другими словами из этого же класса рифм.

Каждая из поэм Беси включает \(M\) строк (\(1 \leq M \leq 10^5\)) и каждая строка должна состоять из \(K\) (\(1 \leq K \leq 5000\)) слогов. Более того, поэм Беси должна соответствовать специфической схеме рифм.

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

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

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

Каждая из следующих \(N\) строк содержит два числа \(s_i\) (\(1 \leq s_i \leq K\)) и \(c_i\) (\(1 \leq c_i \leq N\)). Они обозначают, что Беси знает слово с длиной (в слогах) \(s_i\) и класса рифмы \(c_i\).

Последние \(M\) строк описывают желаемую схему рифмы Беси и каждая содержит одну большую букву \(e_i\). Все строки соответствующие \(e_i\) должны заканчиваться словами одного и того же кдасса рифм. Строки с различными значениями \(e_i\) не обязательно заканчиваются словами с различными классами рифм.

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

Выведите количество поэм, которые может Беси написать, удовлетворяющих все заданным ограничениям. Поскольку это число может быть очень велико, выводите ответ по модулю 1,000,000,007.

Фермер Джон пытается отсортировать свои \(N\) коров (\(1 \leq N \leq 100\)), последовательно пронумерованных \(1 \dots N\).

В настоящий момент коровы выстроились в линию в порядке \(p_1, p_2, p_3, \dots, p_N\), и ФД стоит перед коровой \(p_1\). Он хочет переупорядочить коров так, чтобы они стали в порядке \(1, 2, 3, \dots, N\), с коровой \(1\) перед ФД.

Фермера Джона слышит только корова, которая стоит перед ним. В этот момент ФД может сказать ей перейти на \(k\) позиций назад (\(k\) в интервале \(1 \ldots N-1\).). \(k\) коров, которых она проходит , двигаются вперёд, освобождая место для неё, в которое она и становится.

Например, пусть \(N=4\) и коровы стоят в таком порядке

 ФД: 4, 3, 2, 1 

Единственная корова, которая слышит ФД, это корова \(4\). Если он скажет ей сдвинуться на 2 позиции, порядок станет таким:

 ФД: 3, 2, 4, 1 

Теперь ФД слышит только корова \(3\). Теперь ей можно давать инструкцию и т.д.

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

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

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

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

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

Одно целое число - минимальное количество команд, которые должен дать ФД чтобы отсортировать всех коров.

Корова Беси со своей подружкой Эльзой любят играть в следующую игру.

Сначала Беси кладёт три перевёрнутые ракушки на стол и маленький круглый камешек под одну из них. Затем Беси меняет пары ракушек, а Эльза пытается угадать где камешек.

В стандартной версии игры наблюдатель видит куда положили камушек в самом начале игры.

Однако в этой игре Эльза не видит начальное положение камушка, но она может угадывать положение камешка. Беси, зная правильный ответ, даёт Эльзе счёт в конце, равный количеству правильных угадываний Эльзой.

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

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

Первая строка входного файла содержит целое число \(N\), задающее количество обменов (\(1 \leq N \leq 100\)). Каждая из последующих \(N\) строк описывает шаг игры и содержит три целых числа \(a\), \(b\), \(g\), указывающих, что ракушки \(a\) и \(b\) обмениваются Беси, а затем Эльза говорит, что после обмена камешек находится под ракушкой \(g\). Все эти три целых числа принимают одно из значений 1, 2, 3 и \(a \neq b\).

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

Выведите максимальное количество очков, которое может заработать Эльза.

Bessie и Эльза любя также играть в игру "угадай животное".

Сначала Беси задумывает некоторое животное. Затем Эльза задаёт серию вопросов, чтобы угадать, какое животное задумала Беси. На каждый вопрос Беси отвечает "Да" или "Нет". Например:

Эльза: "Животное летает?" 
Беси: "Нет" 
Эльза: "Ест траву" 
Беси: "Да" 
Эльза: "Даёт молоко?"
Беси: "Да" 
Эльза: "Делает му-у?"
Беси: "Да" 
Эльза: "Корова." 
Беси: "Точно!"

Назовём "правдоподобным множеством" множество всех всех животных, с характеристиками подходящими вопросам Эльзы. Эльза задаёт вопросы пока в "правдоподобном множестве" останется только одно животное, после чего она называет его в качестве ответа. Для каждого вопроса Эльза выбирает характеристику некоторого животного и спрашивает о ней (даже если ответ не сузит "правдоподобное множество"). Она никогда не спрашивает об одной и той же характеристике дважды.

Вам даны все животные, которых знают Беси и Эльза и их характеристики. Определите максимальное количество ответов "Да", которые может получить Эльза, прежде чем она узнает задуманное животное.

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

Первая строка ввода содержит количество животных, \(N\) (\(2 \leq N \leq 100\)). Каждая из последующих \(N\) строк описывает животное. Строка начинается с названия животного, затем идёт целое число \(K\) (\(1 \leq K \leq 100\)), и затем \(K\) характеристик этого животного. Названия и характеристики животных это строки из маленьких латинских букв (a..z), длиной не более 20 символов. Никакие два животных не имеют полностью совпадающие характеристики.

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

Выведите максимальное количество ответов "Да", которые Эльза может получить прежде чем игра закончится.

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

Мы можем описать эту сторону амбара как двумерную плоскость, на которой ФД красит \(N\) прямоугольников, стороны каждого из которых параллельны осям координат, и каждый из которых описывается своим левым нижним и правым верхним углами.

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

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

Первая строка ввода содержит \(N\) и \(K\) (\(1 \leq K \leq N \leq 10^5\)). Каждая из оставшихся \(N\) строк содержит четыре целых числа \(x_1, y_1, x_2, y_2\) описывающих прямоугольный регион, который зарисовали левым нижним углом \((x_1, y_1)\) и правым верхним углом \((x_2, y_2)\). Все величины \(x\) и \(y\) находятся в интервале \(0 \ldots 1000\), все прямоугольники имеют положительную площадь.

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

Выведите площадь амбара, которая покрыта ровно \(K\) слоями краски.

Фермер Джон сделал новый сайт для коров и быков.

Беси решила воспользоваться им для поиска партнёра. Он создала аккаунт и получила список из \(N\) возможных соответствий (\(1\leq N \leq 10^6\)). Беси оценила, что каждый бык имеет вероятность \(p_i\) (\(0<p_i<1\)) согласиться на её приглашение на танец.

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

Формат входных данных:

Первая строка ввода содержит \(N\) (\(1 \leq N \leq 10^6\)). Каждая из оставшихся строк содержит \(10^6\) умноженное на \(p_i\), что является целым числом.

Как минимум для 25% тестов гарантировано \(N \leq 4000\).

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

Выведите умноженную на \(10^6\) вероятность получить ровно одно принятое приглашение округлённую вниз до ближайшего целого числа.

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

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

ФД хочет покрасить амбар в несколько слоёв, так чтобы не пришлось вскорости снова красить. Однако, он не хочет тратить время на лишнюю покраску. Сначала он решил, что оптимально покрасить \(K\) раз. Однако оглядев область Амбара, покрашенную ровно \(K\) раз, он решил добавить два прямоугольника, Так, чтобы максимально увеличить площадь, покрашенную ровно \(K\) раз, так чтобы эти прямоугольники не имели общей ненулевой площади пересечения. Заметим, что он может рисовать ноль новых прямоугольников или только один прямоугольник, если это может улучшить результат.

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

Первая строка ввода содержит \(N\) и \(K\) (\(1 \leq K, N \leq 10^5\)). Каждая из оставшихся \(N\) строк содержит четыре целых числа \(x_1, y_1, x_2, y_2\) описывающих прямоугольный регион левым нижним углом \((x_1, y_1)\) и правым верхним углом \((x_2, y_2)\). Все величины \(x\) и \(y\) в интервале \(0 \ldots 200\), и все прямоугольники имеют положительную площадь.

Как и уже нарисованные прямоугольники, новые должны иметь положительную площадь, а координаты их углов \(x\) и \(y\) должны быть в интервале \(0 \ldots 200\).

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

Выведите максимальную площадь амбара, которая может быть покрыта ровно \(K\) слоями краски, если ФД закрасит ещё до двух дополнительных непересекающихся (по площади) прямоугольника.

Cow Land#90051
CowLand это специальный парк развлечений для коров, где они бродят, едят вкусную траву и посещают различные аттракционы для коров.

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

Корова, которая проходит от аттракциона \(i\) до аттракциона \(j\) получает удовольствие всех аттракционов маршрута от \(i\) до \(j\). Забавно, что общее удовольствие от всего маршрута вычисляется как побитовое XOR всех удовольствий в течение маршрута, включая удовольствия в аттракционах \(i\) и \(j\).

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

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

Первая строка ввода содержит \(N\) и количество запросов \(Q\) (\(1 \leq Q \leq 10^5\)). Следующая строка содержит \(e_1 \ldots e_N\) (\(0 \leq e_i \leq 10^9\)). Каждая из следующих \(N-1\) строк описывает дорожку в терминах двух номеров целочисленных аттракционов \(a\) и \(b (оба в интервале \)1 \ldots N$). Наконец, каждая последних \(Q\) строк описывает или изменение одной из величин \(e_i\) или запрос на удовольствие от маршрута. Строка вида "1 \(i\) \(v\)" означает, что величину \(e_i\) нужно изменить на значение \(v\) (\(e_i\) should be updated to value \(v\)). Строка вида "2 \(i\) \(j\)" это запрос на удовольствие от маршрута, соединяющего аттракционы \(i\) и \(j\).

В тестах не более 50% не будет изменений удовольствий на аттракционах.

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

Для каждого запроса вида "2 \(i\) \(j\)", выведите одну строку - удовольствие от маршрута от \(i\) к \(j\).

Длительная засуха лишила травы \(N\) пастбищ Фермера Джона. Однако с приближением сезона дождей пришло время восстановить траву на пастбищах.

В сарае ФД есть четыре ведра, каждое хранит семена своего типа. ФД хочет посадить на каждом пастбище траву семенами одного из этих типов. ФД хочет каждой их своей коров различную диету. Каждая из его \(M\) коров имеет два любимых пастбища. И он хочет гарантировать, чтобы на каждой такой паре пастбищ была засеяна трава различных типов, и тогда каждая корова сможет выбирать из двух видов травы. ФД знает, что нет пастбища, которое нравится более чем трём коровам.

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

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

Первая строка ввода содержит \(N\) (\(2 \leq N \leq 100\)) и \(M\) (\(1 \leq M \leq 150\)). Каждая из последующих \(M\) строк содержит два целых числа в интервале \(1 \ldots N\), описывающих пару любимых пастбищ соответствующей коровы.

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

Выведите число из N цифр, каждая цифра которого в интервале \(1 \ldots 4\), описывающее тип травы, которую нужно посадить на соответствующем пастбище. Первая цифра описывает тип травы на пастбище 1, вторая - на пастбище 2 и т.д. Если возможно несколько решений, выведите такое, что соответствующее число из \(N\) цифр минимальное.

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

К несчастью, ФД уронил свои датчики в молоко, и теперь они работают не очень хорошо. Вместо вывода точного значения трафика, датчик теперь выдаёт диапазон возможных значений. Например, датчик может показывать диапазон \([7, 13]\), означающий, что плотность трафика на этом участке не меньше чем 7 и не больше чем 13.

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

По заданным показаниям \(N\) датчиков, определите наиболее точно диапазоны, описывающие движение на шоссе от мили 1 к миле \(N\). Эти диапазоны должны не противоречить показаниям всех \(N\) датчиков.

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

Первая строка содержит число \(N\) (\(1 \leq N \leq 100\)). Каждая из оставшихся \(N\) строк описывает одномильный сегмент дороги в порядке от мили 1 к миле \(N\). Каждая строка сначала содержит символы "on" (если это сегмент с пандусом для въезда), "off" (если это сегмент с пандусом для выезда), "none", если сегмент не содержит пандусов, за которыми следуют два целых числа в интервале \(0 \ldots 1000\), описывающих интервал, показанный соответствующим датчиком. Если сегмент с пандусом - считывается показание с датчика на пандусе, иначе - с датчика на шоссе. Как минимум для одного датчика будет указано "none".

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

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

ФОРМАТ ВВОДА:

4
on 1 1
none 10 14
none 11 15
off 2 3

ФОРМАТ ВЫВОДА:

10 13
8 12

В этом примере, комбинация считываний датчиков с сегментов 2 и 3 сужает интервал до \([11, 14]\), поскольку только показания в этом интервале соответствуют обоим считываниям \([10,14]\) и \([11,15]\). На миле 1 ровно значение 1 представляет входящий трафик, поэтому входящий трафик может быть в диапазоне \([10, 13]\). На миле 4 от 2 до 3 единиц потока может покинуть трафик, поэтому выходной поток после мили 4 может быть \([8,12]\).

Автор: Brian Dean

MooBuzz#90047
Коровы фермера Джона недавно стали поклонниками простой числовой игры под названием «FizzBuzz». Правила игры просты: стоя в кругу, коровы последовательно отсчитывают от одного, каждая корова произносит одно число, когда наступает ее очередь. Однако, если корова достигнет числа кратного 3, она должна сказать «Fizz» вместо этого числа. Если корова достигает кратного 5, она должна сказать «Buzz» вместо этого числа. Если корова достигает кратного 15, она должна сказать «FizzBuzz» вместо этого числа. Поэтому расшифровка первой части игры:

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16

Имея немного более ограниченный словарный запас, версия FizzBuzz, которую играют коровы, включает в себя выражение «Moo» вместо Fizz, Buzz и FizzBuzz. Поэтому начало коровьей версии игры

1, 2, Moo, 4, Moo, Moo, 7, 8, Moo, Moo, 11, Moo, 13, 14, Moo, 16

По заданному числу \( N \) (\( 1 \ leq N \ leq 10 ^ 9 \)), определите \( N \)-ое число, которое говорят в этой игре.

ОЦЕНИВАНИЕ

  • Тесты 2-5 удовлетворяют \( N \ le 10 ^ 6. \)

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

Ввод состоит из единственного целого числа, \( N \).

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

Выведите \( N \)-ое число, которое произнесли во время игры.

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

Беси добавила нос к одному из снежков, поэтому он представляет собой голову этой абстрактной снежной коровы. Она обозначила это снежок числом 1. Чтобы усилить визуальный эффект, она планирует покрасить некоторые из снежков различными цветами. Цвета обозначаются числами в интервале \(1 \ldots 10^5\), и у Беси неограниченное количество красок всех цветов.

Когда Беси красит снежок в определённый цвет, все снежки в его поддереве также красятся в этот же цвет. (Снежок \(y\) находится в поддереве снежка \(x\), если \(x\) находится на пути от \(y\) к головному снежку). Занимаясь покраской, Беси обеспечивает, чтобы все цвета, которыми она красила снежки, оставались видимыми. Например, если у снежка есть цвета \([1,2,3]\) и Беси красит цветом \(4\), на снежке останутся следы цветов \([1,2,3,4]\).

После некоторого количества раскрашиваний, Беси хочет узнать, как раскрашена часть её коровы. Полнота цветов("colorfulness") снежка \(x\) равно количеству различных цветов \(c\), которыми раскрашен этот снежок \(x\). Если Беси спросит Вас о снежке \(x\), Вы должны ответить сумму полноты цветов всех снежков в поддереве \(x\).

Помогите Беси определить полноту цветов в определённые моменты времени.

ОЦЕНИВАНИЕ:

\(Q\) определено ниже.

  • Тесты 2-3 удовлетворяют \(N\le 10^2, Q\le 2\cdot 10^2.\)
  • тесты 4-6 удовлетворяют \(N\le 10^3, Q\le 2\cdot 10^3.\)

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

Первая строка содержит \(N\), и количество запросов \(Q\) (\(1\le Q\le 10^5\)).

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

Каждая из последних \(Q\) строк содержит запрос. Запрос имеет вид

1 x c

и означает. что Беси закрасила цветом \(c\) снежок \(x\) и всё его поддерево. Строка вида

2 x

Это запрос на сумму "полноцветностей" всех снежков в поддереве \(x\). \(1\le x\le N\) и \(1\le c\le 10^5.\)

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

Для каждого запроса типа 2, выведите сумму "полноцветностей" соответствующего поддерева. Заметим. что Вы должны использовать 64-ное целое, чтобы избежать переполнения.

Фермер Джон идёт по дорожке и думает, что не может потеряться.

Вдоль дороги имеется \(N\) ферм (\(1 \leq N \leq 100\)). На фермах нет номеров, поэтому ФД тяжело ориентироваться. Зато на каждой ферме имеется цветной почтовый ящик со стороны дороги. поэтому ФД надеется, что если он посмотрит на цвета ближайших почтовых ящиков, он сможет однозначно определить, где он находится.

Каждый цвет почтового ящика обозначается буквой в интервале A..Z, таким образом, последовательность \(N\) почтовых ящиков вдоль дороги представляется строкой длины \(N\), содержащей символы в интервале A..Z. Некоторые почтовые ящики могут иметь одинаковые цвета. ФД хочет узнать минимальное число \(K\) такое, что если он посмотрит на любую последовательность из \(K\) последовательных ящиков, он уникально определит местоположение этой последовательности на дороге.

Например, предположим, что последовательность ящиков вдоль дороги есть 'ABCDABC'. ФД не может выбрать \(K=3\), поскольку если он увидит 'ABC', то имеется два расположения такой строки вдоль дороги. Минимальное значение \(K\), которое работает, \(K=4\), поскольку любые последовательные 4 символа уникально определяют его позицию вдоль дороги.

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

Первая строка ввода содержит \(N\), вторая строка содержит строку из \(N\) символов, каждый в интервале A..Z.

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

Выведите строку, содержащую одно целое число, указывающее минимальное значение \(K\), которое решает задачу ФД.

Каждый день Фермер Джон доит своих 8 коров, которых зовут Bessie, Buttercup, Belinda, Beatrice, Bella, Blue, Betsy, и Sue.

К несчастью, коровы довольно разборчивы и требуют, чтобы ФД доил их в порядке, который соответствует \(N\) ограничениям (\(1 \leq N \leq 7\)). Каждое из ограничений имеет вид "\(X\) must be milked beside \(Y\)" ("\(X\) необходимо подоить рядом \(Y\)"), что означает, что в порядке дойки корову \(X\) нужно доить сразу после коровы \(Y\) или непосредственно перед коровой \(Y\).

Пожалуйста, помогите ФД определить порядок дойки его коров, который удовлетворяет всем требуемым ограничениям. Гарантируется, что такое упорядочивание всегда возможно. Если возможно несколько упорядочиваний, выведите первое из них в алфавитном порядке. То есть, первая корова должна иметь наименьшее в алфавитном порядке имя из всех возможных имён, которые могут быть первыми. Среди всех упорядочиваний, начинающихся с этой же первой коровы, вторая корова должна быть наименьшей в алфавитном порядке среди всех корректных упорядочиваний и т.д.

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

Первая строка ввода содержит \(N\). Каждая из последующих \(N\) строк содержит предложение описывающее ограничение вида "\(X\) must be milked beside \(Y\)" где \(X\) и \(Y\) - имена некоторых их коров ФД (8 возможных вариантов перечислены в начале условия задачи).

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

Выведите, используя 8 строк, порядок имён коров, по одному в строке, удовлетворяющий всем ограничениям. Если возможно несколько порядков, выведите наиболее ранний в смысле алфавита.

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