Язык программирования

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

Как часть исследования вопроса "почему коровы переходят дороги", Фермер Джон получить задание составить документ о том, сколько раз каждая из его коров переходила дорогу. Он тщательно залоггировал данные о местоположении каждой из его коров, и выполнил серию из \(N\) наблюдений в течение дня. Каждое наблюдение содержало ID коровы (целое число в интервале \(1 \ldots 10\), поскольку у ФД было всего 10 коров), а также на какой стороне дороги находится корова.

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

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

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

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

Вычислите общее количество подтверждённых пересечений.

У Фермера Джона есть 7 молочных коров: Bessie, Elsie, Daisy, Gertie, Annabelle, Maggie, Henrietta. Он доит их каждый день и хранит детальный протокол количества молока, которая дала каждая корова во время каждой дойки. Не удивительно, что ФД поощряет коров, которые дают больше молока.

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

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

Ввод начинается со строки, содержащей целое число \(N\) (\(1 \leq N \leq 100\)), определяющее количество записей в протоколе дойки.

Каждая из \(N\) последующих строк содержит имя коровы (одно из 7 указанных выше), за которым следует положиельное число (не более 100), указывающее количество молока, которое произвела корова во время очережной дойки.

Любая корова, которая не появилась протоколе - не произвела молока вообще.

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

В единственной строке вывода выведите имя коровы, которая произвела второе по минимальности количество молока. Более точно, если \(M\) минимальное количество молока из всех произведённых коровами, выведите имя коровы, которая произвела минимальное колчиество млока, большее чем \(M\). Если несколько коров произвели такое количество молока или нет аких коров (т.е. все произвели по \(M\) молока), выведите слово "Tie". Не забудьте добавить символ перевода строки в своему выводу. Заметим, что \(M=0\) если одна из коров полностью отсутствует в протоколе дойки.

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

Недавно ФД ввёл в контест 4 дивизиона сложности: Bronze, Silver, Gold, Platinum. Все новые участники начинают в дивизионе Bronze, как только они показывают на контесте совершенный результат, они переводятся в следующий дивизион. Возможно даже, что участник переводится несколько раз в течение одного контеста. ФД хранит список всех участников и их текущий дивизион. Поэтому каждый начинает со своего дивизиона в любой момент контеста.

Когда ФД публикует результаты последнего контеста, он хочет включить информацию по количествам переведенных из Bronze в Silver, из Silver в Gold, из Gold в Platinum. Однако он затрудняется считать перемещения, если они происходят в течение одного контеста. Беси поняла, что ФД может выводить количество случившихся перемещений непосредственно из количества участников в каждом уровне до и после контеста. Помогите ей выполнить эти вычисления.

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

Ввод состоит из 4 строк, каждая содержит два числа в интервале 0..1,000,000. Первая строка указывает количество участников в дивизионе Bronze до и после контеста. Вторая строка указывает количество участников в дивизионе Silver до и после контеста. Третья строка указывает количество участников в дивизионе Gold до и после контеста. Четвёртая строка указывает количество участников в дивизионе Platinum до и после контеста.

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

Пожалуйста, выведите три строки, каждая содержит одно целое число. Первая строка должна содержать количество участников, которые были перемещены из Bronze в Silver. Вторая строк должна содержать количество участников, которые были перемещены из Silver в Gold. Последняя строка должна содержать количество участников, которые были перемещены из Gold в platinum.

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

Когда дощечки лежат на земле, видно \(N\) слов. Переворачивая таблички можно получать различные множества из \(N\) слов. Чтобы помочь коровам запомнить буквы, ФД хочет подготовить некоторое количество деревянных блоков, на каждом из которых выписана одна буква алфавита. Он хочет подготовить достаточное количество блоков с каждой буквой, для того чтобы вне зависимости от того, какое множество из \(N\) слов показывается, коровы могли составить все слова используя эти блоки. Например, если \(N=3\) и на табличках представлены слова 'box', 'cat', 'car', коровам нужно как минимум 1 'b', 1 'o', 1 'x', 2 'c', 2 'a', 1 't', 1 'r'.

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

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

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

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

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

Выведите 26 строк. Первая выходная строка должна содержать требуемое количество букв ‘a’. Следующая строка должна содержать требуемое количество букв ‘b’. И т.д.

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

Если мы рассмотрим изгородь ФД как одномерную числовую прямую, то ФД закрашивает интервал между \(x=a\) and \(x=b\). Например, если \(a=3\) and \(b=5\), то ФД закрашивает интервал длиной 2. Беси, не понимая команды ФД, закрашивает интервал от \(x=c\) to \(x=d\), который может частично или полностью перекрываться с интервалом ФД. Пожалуйста, определите общую длину изгороди которую покрасят ФД и Беси.

Формат ввода (файл paint.in):

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

Вторая строка содержит целые числа \(c\) и \(d\), разделённые одним пробелом (\(c < d\)).

Значения \(a\), \(b\), \(c\), \(d\) все лежат в интервале \(0 \ldots 100\), включительно.

Формат вывода (файл paint.out):

Выведите в одной строке общую длину изгороди, покрытой краской.

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

Если мы рассмотрим изгородь ФД как одномерную числовую прямую, то ФД закрашивает интервал между \(x=a\) and \(x=b\). Например, если \(a=3\) and \(b=5\), то ФД закрашивает интервал длиной 2. Беси, не понимая команды ФД, закрашивает интервал от \(x=c\) to \(x=d\), который может частично или полностью перекрываться с интервалом ФД. Пожалуйста, определите общую длину изгороди которую покрасят ФД и Беси.

Формат ввода (файл paint.in):

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

Вторая строка содержит целые числа \(c\) и \(d\), разделённые одним пробелом (\(c < d\)).

Значения \(a\), \(b\), \(c\), \(d\) все лежат в интервале \(0 \ldots 100\), включительно.

Формат вывода (файл paint.out):

Выведите в одной строке общую длину изгороди, покрытой краской.

Marathon#90333

Беси участвует в марафоне.
Маршрут марафона состоит из N контрольных точек (3 <= N <= 500),
которые надо посетить по порядку, причём контрольная точка 1 -
старт, контрольная точка N - финиш.

Беси решил пропустить до K (K сократить себе маршрут. Она не может пропустить контрольные точки
1 и N.

Определите минимальное расстояние которое пробежит Беси, если она
может пропустить до K контрольных точек.

Поскольку марафон проводится на улицах Манхэттена, то и расстояние
между точками (x1, y1) и (x2, y2) нужно определять манхэттенское:
|x1-x2| + |y1-y2|.

INPUT: (файл marathon.in)

В первой строке задаются N и K.
Каждая из следующих N строк содержит два разделённых пробелом целых
числа x и y, представляющих контрольную точку (-1000 <= x <= 1000,
-1000 <= y <= 1000). Контрольные точки даны в порядке, в котором они
должны посещаться.

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

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

Выведите миниальное расстояние, которое Беси может пробежать,
пропустив до K контрольных точек. В данном примере, пропустив
точки (8,3) и (10,-5) она пробежит минимальное растояние, равное 4.

Marathon#90328

Фермер Джон отправил Беси на марафон.
Дистанция включает N (3 <= N <= 100,000) контрольных пунктов,
которые нужно посетить поочерёдно, от 1 до N.
Ленивая Беси решила пропустить один контрольный пункт
(не 1 и не N разумеется).

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

Замечание: расстояние между двумя точками (x1,y1) и (x2,y2)
надо рассматривать и вычислять как манхэттенское
|x1-x2| + |y1-y2|,
поскольку во время этого марафона двигаться можно только
параллельно осям координат.

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

Первая строка даёт значение N.

Каждая из последующих N строк содержит два разделённых
пробелом целых числа X и Y (-1000 <= x <= 1000, -1000 <= y <= 1000),
представляющих контрольный пункт.

Контрольные пункты задаются в том порядке, в котором их
необходимо посещать.

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

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

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

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

В приведенном примере, пропустив точку(8,3) получим
минимальное расстояние 14.

Пример вывода

14

Беси любит разгадывать кроссворды.
Однако её сестра Эльза пролила молоко на кроссворд,
и теперь Вам предстоит его восстановление (номеров
загаданных слов).

Вам даётся кроссворд, как решётка N*M (3 <= N <=
50, 3 <= M <= 50). Некоторые из клеток пусты (обычно они
белые), а некоторые заблокированы (обычно они чёрные).

Теперь процесс присвоения номеров загаданным словам -
это простой процесс из двух логических шагов:

Шаг 1: Для каждой ячейки мы определяем, начинает ли она
горизонтальное загаданное слово, или вертикальное
загаданное слово. Чтобы ячейка начинала горизонтальное
загаданное слово, нужно, чтобы её левая соседка была
заблокированной ячейкой или лежала вне кроссворда и две
клетки вправо от неё должны быть пустыми. (То есть
горизонтальное загаданное слово всегда содержит 3 или более
символов). Правила для ячейки, начинающей вертикальное
загаданное слово аналогичны: ячейка сверху должна быть
заблокирована или вне кроссворда и две клетки вниз
должны быть пустыми.

Шаг 2: Мы назначаем номер каждой ячейке, которая начинает
слово, последовательно от 1 в том же порядке, в котором
мы читаем книгу.
В первой строке назначаем числа слева направо, затем во
второй строке назначаем числа слева направо и т.д.
Числа назначаются только ячейкам, начинающим слова.

Например, рассмотрим кроссворд, где пустые ячейки отмечены
символами '.'. а блокированные ячейки отмечены символами '#'.

...
#..
...
..#
.##

Ячейки, которым могут быт присвоены номера
горизонтальных или вертикальных загаданных слов
помечены символами !.

!!!
#..
!..
..#
.##

Номера должны быть таковы:

123
#..
4..
..#
.##

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

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

Первая строка ввода содержит N и M, разделённые
одиночным пробелом.

Последующие N строк ввода описывают строки
решётки. Каждая состоит из M символов, каждый из которых
либо '.' (пустая ячейка) либо '#' (блокированная ячейка).

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

На первой строке выведите количество загаданных слов.
На каждой из оставшихся строк выведите строку и колонку
дающую позицию одного слова (в порядке, описанном выше).
Верхняя левая ячейка имеет позицию (1,1). Нижняя правая
ячейка имеет позицию (N,M).

**Замечание: Время на тест в этой задаче 4 сек, в 2 раза больше, чем по умолчанию.**

Беси использует свой изящный телескоп чтобы сделать фотографии всех звёзд на ночном небе. Её телескоп может сделать фото \(N \times N\) (\(1 \leq N \leq 1000\)) пикселов, где каждый пиксел это или звезда, или пустое небо. Каждая звезда будет представлена ровно одним пикселом, и никакие две звезды на разделяют один и тот же пиксел.

Ночью происходит что-то странное со звёздами на небе. Каждая звезда или исчезает или перемещается на \(A\) пикселов вправо и на \(B\) пикселов вниз (\(0 \leq A,B \leq N\)). Если звезда исчезает или перемещается за границу фото, она больше не появляется на втором фото.

Беси делает фотографии до и после перемещений, но после экспериментов, она случайно наложила одну фотографию на другую. Теперь она видит белые пикселы, которые были пустыми на обеих фотографиях, серые пикселы, где звезда была ровно на одном фото и чёрные пикселы, где была звезда на обоих фотографиях. Беси также помнит, что на второй фотографии не появились новые звёзды, поэтому первая фотография содержит все звёзды ночного неба. Если не существует исходного положения звёзд, которое может произвести финальное фото, выведите \(-1\).

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

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

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

Далее следуют \(N\) строк, каждая из которых представляет одну строку наложенных фотографий. \(i\)-ая строка представлена строкой \(c_{i,1}c_{i,2}\dots c_{i,N}\), где каждый \(c_{i,j} \in \{W,G,B\}\), представляющих белый, серый и чёрный цвет соответственно.

Гарантируется, что сумма \(N^2\) для всех подтестов не превысит \(10^7\).

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

Для каждого подтеста выведите минимальное количество звёзд, которые существовали до сдвига или \(-1\) если это невозможно определить.

п»ї

Беси стоит пере двумя стогами сена. Первый содержит \(a\) снопов, второй - \(b\) снопов \(1\le a,b\le 10^{18}\)).

Она должна превратить их в стоги с \(c\) и \(d\) снопами - ни больше, ни меньше.

Беси может выполнять только такие два заклинания:

  • Увеличить размер первого стога РЅР° количество СЃРЅРѕРїРѕРІ РІРѕ втором стоге.
  • Увеличить размер второго стога РЅР° количество СЃРЅРѕРїРѕРІ РІ первом стоге.
Она должна выполнять операции последовательно, но она может выполнять их любое количество раз и в любом порядке. Она должна получить ровно \(c\) снопов в первом стоге и \(d\) во втором (\(1\le c,d\le 10^{18}\)).

Для каждого из \(T\) (\(1\le T\le 10^4\)) независимых подтестов, выведите минимальное количество операций, чтобы добиться нужного результата, или если это невозможно, выведите -1.

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

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

Каждая из следующих \(T\) строк содержит четыре целых числа \(a,b,c,d\).

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

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

ПР�МЕР ВВОДА:

4
5 3 5 2
5 3 8 19
5 3 19 8
5 3 5 3

ПР�МЕР ВЫВОДА:

-1
3
-1
0

В первом подтесте невозможно, посокльку изначально \(b>d\), разрешённые операции могут только увеличивать \(b\).

Во втором подтесте изначально стоги имеют \((5, 3)\) снопов. Беси может увеличить первый стог на количество снопов во втором получит \((8, 3)\). Затем увеличит количество второй стог на новое количество снопов в первом, получит \((8, 11)\) Затем сделает эту операцию ещё раз и получит \((8, 19)\) � это минимальное количество операций, чтобы получить данный результат.

Заметим, что в третьем подтесте ответ не такой как во втором, потому, что \(c\) и \(d\) поменяны местами (порядок куч имеет значение).

В четвертом подтесте не требуется выполнять операции.

ПР�МЕР ВВОДА:

1
1 1 1 1000000000000000000

ПР�МЕР ВЫВОДА:

999999999999999999

ОЦЕН�ВАН�Е:

  • Тесты 3-4: \(\max(c, d) \le 20 \cdot\min(a, b)\)
  • Тесты 5-7: \(T \le 10\) and \(a,b,c,d\le 10^6\)
  • Тесты 8-12: Нет дополнительных ограничений

Автор: Benjamin Qi

Ответьте на \(Q\) (\(1\le Q\le 10^5\)) независимых запроса следующего вида:

Вам даны четыре целых числа \(a,b,c,d\) (\(-10^{18}\le a,b,c,d\le 10^{18}\)). За одну операцию Вы можете сделать либо \(a\mathrel{+}=b\), или \(b\mathrel{+}=a\) Определите минимальное количество операций чтобы трансформировать \((a,b)\) в \((c,d)\), если это невозможно сделать, выведите \(-1\).

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

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

Каждая из следующих \(Q\) строк содержит четыре целых числа \(a,b,c,d\).

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

Ответ для каждого запроса на отдельной строке

Фермер Джон нанимает нового вожака стада для своих коров. Для этого он интервьюирует \(N\) (\(2 \leq N \leq 10^5\)) коров на эту позицию. После интервью \(i\)-го кандидата он назначает целое число "уровень компетенции" \(c_i\) от \(1\) дo \(C\) включительно (\(1 \leq C \leq 10^9\)).

Поскольку ФД интервьюировал много коров, он не помнит все \(c_i\). Однако он помнит \(Q\) (\(1 \leq Q < N\)) пар чисел \((a_j, h_j)\) где корова \(h_j\) компетенция которой была строго больше, чем уровень компетенции коров от \(1\) до \(a_j\) (\(1 \leq a_j < h_j \leq N\)).

ФД говорит Вам последовательность \(c_1, \dots, c_N\) (где \(c_i = 0\) означает, что он забыл уровень компетенции коровы \(i\), и \(Q\) пар \((a_j, h_j)\). Помогите ему определить лексикографически минимальную последовательность уровней компетенции, соответствующую этой информации или указать, что такой последовательности не существует. Последовательность чисел называется лексикографически меньше другой последовательности если в ней меньшее число не первой позиции, где эти последовательности различаются.

Каждый ввод содержит \(T\) \((1 \leq T \leq 20)\) независимых подтестов. Гарантируется, что сумма \(N\) по всем подтестам не превысит \(3 \cdot 10^5\).

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

Первая строка содержит \(T\), количество независимых подтестов. Каждый подтест описывается так:
  1. Первая строка содержит \(N\), \(Q\), \(C\).
  2. Следующая строка содержит c1, \dots, cN\( \)(0 \leq ci \leq C)$.
  3. Каждая из последующих \(Q\) строк содержит пару \((a_j, h_j)\). Гарантируется что все \(a_j\) в текущем подтесте различны.

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

Для каждого подтеста выведите одну строку содержащую лексикографически минимальную последовательность уровней компетенции, соответствующую информации, которую помнит ФД, или \(-1\), если такой последовательности не существует.

Moorbles#90257

Беси и Эльза играют с шариками так: Беси и Эльза начинают игру с некоторым количеством шариков. Беси берёт \(A\) шариков из своих, а Эльза должна угадать является ли число \(A\) чётным или нечётным. Если Эльза угадает, она забирает эти \(A\) шариков, если нет - она отдаёт \(A\) своих шариков Беси. Если у Эльзы нет \(A\) шариков - она проиграла. Игрок проиграл, если остался без шариков.

После нескольких этапов игры, у Эльзы осталось \(N\) \((1 \leq N \leq 10^9)\) шариков. Она думает, что ей тяжело выиграть, она играет, чтобы не проиграть. Она хорошо изучила привычки Беси и заметила, что на \(i\)-ом ходу есть только \(K\) \((1 \leq K \leq 4)\) различных количеств шариков, которые может предложить Беси. Проходит всего только \(M\) \((1 \leq M \leq 3 \cdot 10^5)\) ходов прежде, чем Беси надоест, и она перестанет играть. Можете ли Вы определить лексикографически минимальную последовательность ходов такую, чтобы Эльза не проиграла вне зависимости от ходов Беси.

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

Первая строка содержит целое число \(T\) (\(1 \leq T \leq 10\)) представляющее количество подтестов. Каждый подтест описывается следующим образом:
  • Сначала идёт строка, содержащая три целых числа \(N\), \(M\), \(K\), представляющая количество шариков у Эльзы, количество ходов, и количество потенциальных ходов, которые может сделать Беси, соответственно.
  • Затем идут \(M\) строк, где строка \(i\) содержит \(K\) различных разделённых одиночными пробелами целых чисел \(a_{i,1} \; a_{i,2} \ldots a_{i,K}\) (\(1 \leq a_{i, j} \leq 10^3\)) представляющих возможные количества шариков, которые Беси может выложить на \(i\)-ом ходу.
Гарантируется. что сумма \(M\) по всем подтестам не более \(3 \cdot 10^5\).

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

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

Замечание: "Even" лексикографически меньше чем "Odd".

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

Чтобы округлить положительное целое число \(a\) к ближайшему \(10^b\), где \(b\) положительное целое число, Беси сначала находит \(b\)-ую цифру справа. Пусть \(x\) обозначает эту цифру.

Если \(x \geq 5\), Беси добавляет \(10^b\) к \(a\).

Затем Беси устанавливает в \(0\) все цифры вправо от \(b\)-ой цифры.

Например, если Беси хочет округлить \(456\) к ближайшей \(10^2\) (сотне), Беси сначала находит 2-ую цифру справа - это \(5\). То есть, \(x = 5\). Затем, поскольку \(x \geq 5\), Беси прибавляет \(100\) к \(a\). Наконец Беси устанавливает в \(0\) все цифры справа начиная со второй, получается \(500\).

Однако если Беси станет округлять \(446\) до ближайшей \(10^2\), она получит \(400\).

Посмотрев на домашнюю работу Беси, Эльза придумала новый тип округления: цепочечное округления. Чтобы цепочечно округлить до ближайшего \(10^b\), Эльза сначала округляет до ближайшего \(10^1\), затем до ближайшего \(10^2\), и т.д. до ближайшего \(10^b\).

Беси думает, что Эльза ошибается, но она сильно занята со своей домашней работой, чтобы подтвердить свои подозрения. Она просит Вас посчитать сколько целых чисел \(x\), начиная с \(2\) и до \(N\) (\(1 \leq N \leq 10^{9}\)) таких, что округление его до ближайшего \(10^P\) отличается от цепочечного округления к ближайшему \(10^P\), где \(P\) - минимальное целое такое, что \(10^P \geq x\).

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

Вы должны дать ответ на множество подтестов.

Первая строка ввода содержит целое число \(T\) (\(1 \leq T \leq 10^5\)) обозначающее количество подтестов. Далее следуют \(T\) подтестов.

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

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

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

Беси работает в текстовом редакторе miV! Его функция "найти и заменить" позволяет ей заменить все вхождения маленькой латинской буквы \(c\) на непустую строку из маленьких латинских букв \(s\). Например, дана строка "\(\texttt{ball}\)". Если Беси выберет в качестве \(c\) символ 'l' а в качестве строки \(s\) "\(\texttt{na}\)", данная строка трансформируется в "\(\texttt{banana}\)".

Беси начинает со строки "\(\texttt{a}\)" и трансформирует её используя некоторое количество операций «найти и заменить» и получает финальную строку \(S\). Поскольку \(S\) может быть большой, она хочет узнать по заданным \(l\) и \(r\) \(1\le l\le r\le \min(|S|,10^{18})\), чему равно \(S_{l\dots r}\) - подстрока S с позиции \(l\) по позицию \(r\) включительно.

Гарантируется, что сумма \(|s|\) по всем операциям не более \(2\cdot 10^5\), и что \(r-l+1\le 2\cdot 10^5\).

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

Первая строка содержит \(l\), \(r\) и количество операций.

Каждая из последующих строк описывает одну операцию и содержит \(c\) и \(s\) для этой операции. Все символы в интервале от 'a' до 'z'.

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

Выведите строку \(S_{l\dots r}\) на одной строке.

Штамп-живопись это раскрашивание чёрным и белым цветом холста размером \(N \times N\) ячеек, где определённые ячейки закрашиваются, а другие - нет. Этот холст может быть представлен массивом символов \(N\times N\) (\(1\le N\le 20\)). The \(i\)-ый вход \(j\)-ой колонки массива равен символу '*', если холст содержит чернила в этой ячейке и символ '.' в противном случае.

У Беси есть план рисунка, а Фермер Джон дал ей штамп размером \(K\times K\) (\(1\le K\le N\)) который она может использовать для закраски холста размером \(N \times N\). Беси может поворачивать штамп на \(90^{\circ}\) по часовой стрелке и применять его для закраски холста в любом месте, если штамп помещается целиком на холсте. Формально, Беси выбирает такие целые числа \(i,j\), что \(i \in [1,N-K+1]\) и \(j \in [1, N-K+1]\); и затем для каждого \((i',j')\) такого, что \(1 \le i', j' \le K\), ячейка холста \((i+i'-1, j+j'-1)\) закрашивается в чёрный цвет, если в штампе было чернило в позиции \((i', j')\). Беси может поворачивать свой штамп в любой момент между закрашиваниями. Если ячейку закрасили она остаётся закрашенной навсегда.

ФД интересно может ли Беси создать свой рисунок, используя его штамп. Для каждого из \(T\) (\(1 \le T \le 100\)) подтестов помогите ФД получить ответ.

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

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

Каждый подтест начинается с целого числа \(N\), за которым следуют \(N\) строк, состоящих их символов '*' и '.', представляющих рисунок, который Беси хочет нарисовать. Следующая строка содержит число \(K\), за которым следует \(K\) строк, каждая из которых содержит символы '*' и '.', представляющих штамп ФД.

Последовательные подтесты разделены пустыми строками.

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

Для каждого подтеста выведите "YES" или "NO" на отдельной строке.

Беси - робокорова, также известная как корборг. Она на числовой прямой старается выстрелить по \(T\) \((1 \leq T \leq 10^5)\) целям, расположенным в различных позициях. Беси начинает в позиции \(0\) и и следует строке из \(C\) \((1 \leq C \leq 10^5)\) команд, каждая из которых одна из букв L, F, или R:

  • L: Беси двигается на одну единицу влево.
  • R: Беси двигается на одну единицу вправо.
  • F: Беси стреляет. Если в текущей позиции Беси находится цель, она разрушается и её больше нельзя разрушить.

Если Вам разрешено изменить не более одной команды в строке на другую команду, прежде чем Беси начнёт следовать этой строке команд, какое максимальное количество целей сможет поразить Беси?

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

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

Следующая строка содержит позиции этих \(T\) целей, различные целые числа в интервале \([-C,C]\).

Следующая строка содержит строку команд длины \(C\), одержащую только символы F, L и R.

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

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

Фермер Джон вырастил \(N\) (\(1 \leq N \leq 2\cdot 10^5\)) аспарагусов на своей ферме. Однако некоторые из этих растений имеют генетические отличия, поэтому некоторые растения растут быстрее чем другие. Изначальная высота \(i\)-го растения равна \(h_i\) дюймов и после каждого дня \(i\)-ое растение вырастает на \(a_i\) дюймов.

ФД любит некоторые растения больше чем другие, и он хочет, чтобы некоторые растения были выше чем другие. Он дал Вам массив различных целых чисел \(t_1,\dots,t_N\), содержащих все целые числа от \(0\) до \(N-1\) и хочет, чтобы \(i\)-ое растение имело ровно \(t_i\) растений, которые выше этого. Определите минимальное количество дней, чтобы требование ФД было удовлетворено или укажите, что это невозможно.

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

Первая строка состоит из целого числа \(T\), обозначающего количество независимых тестов \((1 \leq T \leq 10)\).

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

Вторая строка состоит из \(N\) целых чисел \(h_i\) \((1 \leq h_i \leq 10^9)\), обозначающих изначальную высоту \(i\)-го растения в дюймах.

Третья строка состоит из \(N\) целых чисел \(a_i\) \((1 \leq a_i \leq 10^9)\), обозначающих количество дюймов, на которые \(i\)-ое растение вырастает каждый день.

Четвёртая строка содержит \(N\) различных целых чисел \(t_i\), обозначающих массив, который ФД даст Вам.

Гарантируется, что сумма всех \(N\) по всем тестам не превысит \(2\cdot 10^5\).

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

Выведите \(T\) строк, ответ на каждый тест на отдельной строке. Если невозможно, выведите -1.

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

Имеется строка \(s\) длиной не более \(2 \cdot 10^5\) символов (только трёх 'C', 'O', 'W'). Требуется узнать, можно ли её превратить в одну букву 'C', используя следующие операции:

1. Выбрать два соседних одинаковых символа и удалить их.

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

В задаче требуется дать ответ для \(Q\) (\(1\le Q\le 2\cdot 10^5\)) подстрок строки \(s\).

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

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

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

Каждая из последующих \(Q\) строк содержит два целых числа \(l\) и \(r\) (\(1\le l\le r\le |s|\), где \(|s|\) означает длину строки \(s\)).

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

Строка длины \(Q\), где \(i\)-ый символ есть 'Y', если \(i\)-ая подстрока может быть сокращена до 'C'. и 'N' в противном случае.

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