DOC

advertisement
Задача A
Конвейер
Имя входного файла:
a.in
Имя выходного файла:
a.out
Максимальное время работы на одном тесте:
2 секунды
Максимальный объем используемой памяти:
64 мегабайта
Для транспортирования материалов из цеха А в цех В используется конвейер. Материалы
упаковываются в одинаковые контейнеры и размещаются на ленте один за одним в порядке изготовления в
цехе А. Каждый контейнер имеет степень срочности обработки в цехе В. Для упорядочивания контейнеров
по степени срочности используют накопитель, который находится в конце конвейера перед входом в цех В.
Накопитель работает пошагово, на каждом шаге возможны следующие действия:
накопитель перемещает первый контейнер из ленты в цех В;
накопитель перемещает первый контейнер из строки в склад (в складе каждый следующий
контейнер помещается на предыдущий);
накопитель перемещает верхний контейнер из склада в цех В.
Задание Написать программу, которая по последовательности контейнеров определит, можно ли
упорядочить их по степени срочности пользуясь описанным накопителем.
Входные данные
Входной текстовый файл в первой строке содержит количество тестов N. Далее следует N строк,
каждый из которых описывает отдельный тест и содержит целое число K (1K10000) — количество
контейнеров в последовательности и K действительных чисел — степеней срочности контейнеров в
порядке их поступления из цеха А (меньшим числам соответствует большая степень срочности).
Выходные данные
Каждая строка текстового файла должна содержать ответ для одного теста. Необходимо вывести 1,
если необходимое упорядочивание возможно, или 0 в противном случае.
Примеры
a.in
2
2 2.9 2.1
3 5.6 9.0 2.0
a.out
1
0
Страница 1 из 4
Задача B
Таможня
Имя входного файла:
b.in
Имя выходного файла:
b.out
Максимальное время работы на одном тесте:
2 секунды
Максимальный объем используемой памяти:
64 мегабайта
Идёт 2163 год. Мишу, который работает в отделении таможни при космодроме города Нью-Питер,
вызвал в кабинет шеф.
Как оказалось, недавно Министерство Налогов и Сборов выделило отделению определённую сумму
денег на установку новых аппаратов для автоматического досмотра грузов. Естественно, средства были
выделены с таким расчётом, чтобы грузы теперь находились на таможне ровно столько времени, сколько
требуется непосредственно на их досмотр.
В руках шефа каким-то образом оказались сведения о надвигающейся ревизии — список из N
грузов, которые будут контролироваться Министерством. Для каждого груза известны время его прибытия,
отсчитываемое с некоторого момента, хранимого в большом секрете, и время, требуемое аппарату для
обработки этого груза. Шеф дал Мише задание по этим данным определить, какое минимальное количество
аппаратов необходимо заказать на заводе, чтобы все грузы Министерства начинали досматриваться сразу
после прибытия. Необходимо учесть, что конструкция тех аппаратов, которые было решено установить, не
позволяет обрабатывать два груза одновременно на одном аппарате. Напишите программу, которая
поможет Мише справиться с его задачей.
Входные данные
На первой строке входного файла задано число N (0 < N < 50 000). На следующих N строках
находится по 2 целых положительных числа Ti и Li — время прибытия соответствующего груза и время,
требуемое для его обработки (1 < Ti < 106, 1 < Li < 106).
Выходные данные
В выходной файл выведите одно число — наименьшее количество аппаратов, которое нужно
установить, чтобы не вызвать подозрений у Министерства.
Пример
b.in
3
3 2
4 2
5 2
5
13 4
15 1
11 5
12 3
10 3
b.out
2
3
Страница 2 из 4
Задача C
Фишки
Имя входного файла:
c.in
Имя выходного файла:
c.out
Максимальное время работы на одном тесте:
2 секунды
Максимальный объем используемой памяти:
64 мегабайта
Последовательность клеток занумерована числами от 1 до N. В каждой клетке стоит либо черная,
либо белая фишка. Группой назовем набор подряд стоящих фишек одного цвета, ограниченный с обеих
сторон фишками другого цвета или концами последовательности. Следует переместить фишки так, чтобы
они образовали не более двух групп.
Перемещение фишек описывается с помощью плана обмена, в котором используются понятия
операция обмена и шаг. Операция обмена меняет местами две соседние группы фишек. Шаг состоит не
более чем из K одновременно выполняемых обменов. Обмены можно совершать одновременно только
тогда, когда в них участвуют разные группы. После каждого шага группы одного цвета, оказавшиеся
рядом, объединяются. План обменов содержит описания шагов, выполняемых последовательно.
Шаг 1
Шаг 2
Напишите программу, определяющую план обменов, с помощью которого за наименьшее число
шагов получается последовательность, состоящая не более чем из двух групп.
Входные данные
В первой строке входного файла записаны числа N и K (1≤N≤100000 и 1≤K≤10000). Исходная
расстановка фишек задается в последующих строках, содержащих N чисел (0 или 1), разделенных
пробелами или переводами строк. При этом 0 соответствует черной фишке, 1 — белой.
Выходные данные
Выходной файл должен содержать описание шагов плана, по одному шагу на строке. Описание
шага начинается с числа L — количества обменов на этом шаге. Затем для каждого обмена указывается
минимальный номер клетки, в которой стоит фишка, участвующая в этом обмене. Последняя строка плана
должна содержать одно число 0.
Примеры
c.in
9
1
0
3
1
3
0 0 1 1
1 1 0
1
1 0
c.out
2 1 6
1 1
0
0
Примечание
Требуется найти план, содержащий наименьшее число шагов, при этом общее число обменов
может быть не минимальным.
Страница 3 из 4
Задача D
Хеш-функция
Имя входного файла:
d.in
Имя выходного файла:
d.out
Максимальное время работы на одном тесте:
2 секунды
Максимальный объем используемой памяти:
64 мегабайта
В задачах поиска часто используются так называемые хеш-функции. Одним из важнейших классов
хеш-функций являются так называемые полиномиальные хеш-функции.
Пусть дана строка S = s1s2 ...sl, состоящая из цифр от 0 до 9. Тогда значение полиномиальной хешфункции p(S, x, m) вычисляется следующим образом:
P(X, s, m)  (i  1 sixi  1) mod m
l
(a mod b обозначает остаток от деления числа a на число b). Например, пусть S = 0123, тогда p(S,2,5)
= (0 · 1 + 1 · 2 + 2 · 4 + 3 · 8) mod 5 = 4.
Вам даны множество из n строк (S(1),S(2),...,S(n)), каждая из которых состоит только из цифр от 0 до 9,
и числа m и x. Необходимо найти количество таких пар (i,j), где 1 ≤ i,j ≤ n,i < j, что p(S(i), x, m) = p(S(j), x, m).
Входные данные
Первая строка входного файла содержит три целых числа: n (1 ≤ n ≤ 30000), m (1 ≤ m ≤ 2000), x (1 ≤
x ≤ 100). Далее идут n строк, каждая из которых содержит по одной строке из данного множества: 2-ая
строка входного файла содержит S(1), 3-я — S(2), ..., (i + 1)-ая — S(i), ..., (n + 1)-ая — S(n). Длины S(i) не
превосходят 100, S(i) непусты и состоят только из цифр от 0 до 9.
Выходные данные
Выведите в выходной файл одно число — ответ на задачу.
Примеры
d.in
8 3 8
1234
239
366
261
32890
43823490
382390
3043840
5 10 100
1
2
3
4
5
d.out
11
0
Страница 4 из 4
Download