---> 1657 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 162 163 164 165 166 167 168 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Строка называется палиндромом, если она читается одинаково как слева направо, так и справа налево. Например, строки abba, ata являются палиндромами.

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

Входные данные

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

Выходные данные

Выведите одно число — количество подстрок данной строки, являющихся палиндромами

Примеры
Входные данные
aaa
Выходные данные
6
Входные данные
aba
Выходные данные
4
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Одна программистская компания решила разработать серию игр в жанре «Квест». Один из игроков сумел похитить сценарии игр, и теперь планирует составить описания прохождения всех квестов.

Во всех квестах приключения происходят в некотором здании, где имеется несколько комнат. Комнаты соединены друг с другом дверями. Чтобы открывать двери, можно использовать ключи. Также в игре присутствуют персонажи, объекты и предметы. Основная цель игры — спасти принцессу, которая находится в одной из комнат.

Игрок в квесте может поговорить с любым персонажем. После этого он узнает названия нескольких предметов, которые требуется принести этому персонажу, чтобы тот в свою очередь дал игроку некоторые другие предметы. Некоторые предметы можно найти на полу комнат. Также игрок может использовать предметы на объектах. В результате этого он получает некоторые другие предметы.

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

Входные данные

Первая строка входного файла содержит число \(N\) — количество комнат в игре. Следующие \(N\) строк содержат названия комнат. Следующая строка содержит \(M\) — количество дверей. Следующие \(M\) строк описывают двери — каждая строка содержит номера комнат, разделенных дверью, и название ключа, который открывает эту дверь.

Затем следует описание содержимого комнат. Каждое описание начинается с трех целых чисел: \(c\) — количество персонажей в комнате, \(o\) — количество объектов в комнате и \(i\) — количество предметов на полу в комнате.

Следующие строки содержат описание персонажей. Каждое описание состоит из трех строк. Первая строка содержит имя персонажа. Следующая строка содержит названия одного или более предметов — те предметы, которые игрок должен принести данному персонажу. Последняя строка также содержит названия одного или более предметов — предметы, которые персонаж даст игроку после того, как тот принесет ему запрошенные предметы. Описание объектов в том же формате идет после персонажей. Отличие объектов от персонажей заключается в следующем: после того как игрок отдает предметы персонажу, они остаются у персонажа, а после использования на объекте предметы остаются у игрока. Также прежде чем дать что-либо персонажу требуется поговорить с ним. Последние \(i\) строк описания комнаты содержат названия предметов, которые находятся в ней на полу. Если в одной строке перечисляется несколько предметов, их названия разделяются запятой.

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

Все имена и названия состоят только из букв латинского алфавита, цифр и пробелов. Вы должны игнорировать пробелы в начале и конце имен и названий. Регистр букв во всех именах и названиях имеет значение. Длина каждого имени и названия не превышает 100 символов. Все имена и названия различны. Количество комнат не меньше двух и не превышает восьми. Все двери можно проходить в обоих направлениях. Общее число персонажей, объектов и предметов не превосходит 200. Вы всегда начинаете в комнате, отличной от комнаты, в которой находится принцесса. Никакой предмет не требуется более чем одному персонажу, ни один предмет не требуется одновременно использовать на объекте и отдать персонажу. Ни один предмет нельзя одновременно получить у персонажа, объекта или найти на полу. Ни один ключ не открывает более одной двери, ни один ключ не требуется ни одному персонажу или объекту.

Выходные данные

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

Игрок может:

· говорить с персонажем (talk to …),

· давать предметы персонажу (give … to …) после того, как поговорит с ним,

· брать предметы у персонажа (take … from …) непосредственно после того, как даст ему то, что ему требуется,

· использовать предметы на объектах (use … on …),

· брать предметы у объекта (take … from …) непосредственно после того, как использует на нем то, что требуется

· поднимать объекты с пола (pick …),

· открывать двери с помощью ключей (open door to …),

· переходить из комнаты в комнату (go to …), если эти комнаты непосредственно соединены открытой дверью,

· спасти принцессу (save princess), если игрок находится в комнате, где она заперта.

Следуйте формату, приведенному в примере. Игрок должен всегда давать персонажу или использовать на объекте все необходимые предметы, а также забирать объекты у персонажа или объекта в одно действие.

Если выиграть невозможно, выведите “dead princess” в первой строке выходного файла.

Примеры
Входные данные
2
white room
black room
0
0 0 0
0 0 0
white room
black room
Выходные данные
dead princess
Входные данные
4
white room
black room
blue room
green room
3
1 3 crystal key
1 4 esmerald key
2 3 strange key
0 0 2
crystal key
oranges
0 0 0
2 1 0
Wild Joe
rat, red pepper, coin
strange key
Dead man
orange juice
red pepper, esmerald key
squeezer
oranges
orange juice
0 1 1
monkey
oranges
coin
rat
white room
black room
Выходные данные
pick crystal key
pick oranges
open door to blue room
go to blue room
use oranges on squeezer
take orange juice from squeezer
talk to Dead man
give orange juice to Dead man
take esmerald key and red pepper from Dead man
go to white room
open door to green room
go to green room
pick rat
use oranges on monkey
take coin from monkey
go to white room
go to blue room
talk to Wild Joe
give coin, red pepper and rat to Wild Joe
take strange key from Wild Joe
open door to black room
go to black room
save princess
Заданы прямоугольные рамки с вершинами в целых точках и со сторонами параллельными осям координат. Требуется найти количество точек, лежащих на всех рамках.

В одном городе недавно запустили автобусную сеть. Однако, плата за проезд для жителей этого города показалась чрезмерной. И несознательные граждане, вместо того, чтобы покупать билет, стали договариваться с водителем и ездить за полцены. Конечно, городская казна понесла серьезные убытки, и было решено взять на работу нескольких контролёров. По уставу, каждый контролёр должен стоять на одном месте и останавливать подозрительные автобусы с целью проверки билетов.

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

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

Входные данные

На первой строке входного файла находится число \(n\) (1 ≤ \(n\) ≤ \(10^4\)) – количество маршрутов. Далее следуют \(n\) строк, на каждой из которых находятся две пары целых чисел – координаты двух противоположных вершин прямоугольника, по которому проходит данный маршрут. Все координаты не превосходят \(10^8\) по абсолютной величине.

Выходные данные

Выведите в выходной файл одно число – максимальное количество контролёров, которые смогут обрести работу благодаря этому мероприятию.

Примеры
Входные данные
1
0 0 1 1
Выходные данные
4
Маленькая стрелка часов делает один оборот в час, а большая - один в сутки. Требуется определить, в какой момент стрелки совпадут.

В марсианских сутках \(N\) часов. У марсиан Ятеп и Ашам есть часы со стрелками, которые работают почти так же, как земные – большая стрелка делает один оборот в час, а маленькая – один оборот в сутки. Ятеп и Ашам поссорились и решили не разговаривать, пока стрелки часов не совпадут. Определите точный момент времени, когда это случится.

Входные данные

Во входном файле задано число тестов \(K\) (0 ≤ \(K\)<\(10^4\)), далее для каждого теста указаны целые числа \(N\), \(A\), \(B\) и \(C\) (1<\(10^9\), 0 ≤ \(A\), 0 ≤ \(B\) < \(10^9\)). Числа \(A\), \(B\) и \(C\) означают, что Ятеп и Ашам поссорились в \(A\)+\(B\)/\(C\) часов.

Выходные данные

Для каждого теста выведите искомое время в том же формате: числа \(A\), \(B\) и \(C\), такие, что искомое время равно \(A\)+\(B\)/\(C\) (0 ≤ \(A\), 0 ≤ \(B\), дробь \(B\)/\(C\) – несократимая).

Примеры
Входные данные
2
12 11 0 1
12 0 0 1
Выходные данные
0 0 1
1 1 11
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes
Дано множество строк W. Необходимо найти минимальное множество строк X, такое, что путем конкатенации строк мн-ва X можно составить то же мн-во, что и путем конкатенации строк W

Рассмотрим две строки \(α\) и \(β\). Их конкатенацией называется строка, получающаяся в результате приписывания к строке \(α\) строки \(β\). Эта строка обозначается \(αβ\). Например, конкатенацией строк `ab' и `ac' будет строка `abac'. Очевидно, что это определение естественным образом распространяется на конкатенацию произвольного количества строк. Так, конкатенацией нуля строк будет пустая строка, а конкатенацией одной строки будет она сама.

Рассмотрим некоторое множество \(W\), состоящее из строк. Назовём его замыканием множество \(W\)*, состоящее из тех и только тех строк, которые можно получить в результате конкатенации нуля и более строк из множества \(W\). Таким образом, множество \(W\)* содержит пустую строку, и если строка α принадлежит множеству \(W\)*, а строка \(β\) принадлежит множеству \(W\), то строка \(αβ\) принадлежит множеству \(W\)*. Более того, все элементы множества \(W\)* можно представить в таком виде, то есть \(W\)* является пересечением всех множеств с указанными выше свойствами. Например, если \(W\)={a,ab}, то \(W\)* состоит из всех строк, в которых перед каждой буквой `b' идёт хотя бы одна буква `a'.

Задано некоторое множество строк \(W\). Требуется найти множество \(X\), такое, что \(W\)*=\(X\)* и множество \(X\) имеет минимальное возможное число элементов. В случае, если таких множеств несколько, подходит любое из них. Например, если \(W\)={a,aabb,ab,ac,b,bac}, то единственным множеством, удовлетворяющим условиям задачи будет множество {a,ac,b}.

Входные данные

Входной файл состоит из набора строк, каждая из которых является элементом множества \(W\). Каждая строка из множества \(W\) встречается во входном файле хотя бы один раз. Суммарная длина всех строк во входном файле не превосходит \(10^4\). Количество строк во входном файле не превосходит \(10^4\). После каждой строки из множества \(W\) во входном файле идёт перевод строки (пара символов с ASCII кодами 13 и 10). Строки состоят из символов с ASCII кодами от 33 до 126 включительно.

Выходные данные

Выведите в выходной файл элементы одного из множеств \(X\), удовлетворяющих условиям задачи. Каждая строка множества \(X\) должна быть выведена ровно один раз. Строки должны идти в лексикографическом порядке (лексикографический порядок используется в словарях, в этом порядке строка `ab' меньше строки `aba' и строка `ab' меньше строки `ac'). После каждой строки множества \(X\) должен идти один перевод строки.

Примеры
Входные данные
a
aabb
ab
ac
b
bac
Выходные данные
a
ac
b

Страница: << 162 163 164 165 166 167 168 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест