Темы --> Информатика --> Алгоритмы --> Задачи на моделирование
---> 78 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 10 11 12 13 14 15 16 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Недавно одна очень известная в старину компания, решила выпустить ремейк очень популярной игры - Тетрис. Админ Вася, как человек искренне уважающий все, связанное с историей Информационных Технологий, считает своим долгом поиграть в новый Тетрис-3000. Как и все современные ремейки, Тетрис-3000 является, упрощённой версией старого доброго тетриса, с красивой графикой. Казалось, что можно упростить в Тетрисе, но создатели решили, что теперь все кубики, под которыми не находится никакой другой кубик, должны сразу падать вниз, и не образовывать сложные фигуры с дырками, расстраивая тем самым, незадачливых игроков. К тому же авторы ремейка решили, что удалять ряд, как только он заполниться это слишком сложно, поэтому теперь ряды не стираются. Игра по прежнему заканчивается, как только игрок не сможет уместить очередную фигуру на поле, ну а счет его зависит от количества фигур, которые ему разместить все же удалось.

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

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

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

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

В первой строке записано, единственное число N (1 ≤ N ≤ 10 3 ) . Во второй строке записано N чисел, высоты столбцов в порядке слева направо: h i (0 ≤ h i ≤ 10 9 ) — высота i -го столбца

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

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

Примеры
Входные данные
7
1 3 4 1 4 4 2
Выходные данные
4
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Физики проводят эксперимент для исследования частиц трёх типов: \(x\), \(y\) и \(z\). Они запускают в коллайдер пронумерованный ряд из \(n\) частиц. Во время эксперимента происходит воздействие на одну конкретную частицу, после чего частица исчезает с \(i\)-ого места ряда и моментально появляется на месте \(j\). После её исчезновения номера частиц, стоящих правее, уменьшаются на 1, а после появления, номера частиц, стоящих правее, увеличиваются на 1. После определенного числа воздействий физики интересуются какая частица стоит на месте \(k\). Напишите программу, которая поможет физикам.

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

В первой строке файла два целых числа: \(n\) – количество частиц и m — общее количество воздействий и вопросов (1 \(\le\) \(n\) \(\le\) 1000000, 1 \(\le\) \(m\) \(\le\) 15000). Во второй строке — последовательность из символов \(x\), \(y\) и \(z\) длиной \(n\). На каждой из следующих \(m\) строк (1 \(\le\) \( m\) \(\le\) 15000) описано воздействие или вопрос. Строка, в которой описано воздействие, начинается символом \(a\) и после пробела дается два целых числа из интервала [1; \(n\)]. Первое из них показывает начальное, а второе  конечное местоположение частицы во время воздействия. Строка, в которой описан вопрос, начинается символом \(q\) и после пробела дается одно целое число из интервала [1; \(n\)]. Оно указывает позицию, которая интересует физиков.

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

Выведите столько строк, сколько вопросов во входном файле. В строке номер \(i\) надо записать ответ на вопрос \(i\) — название соответствующей частицы \(x\), \(y\) или \(z\).

Пояснения к примеру

Последовательность после первого воздействия – xxyyzxxzxzyyzyx, последовательность после второго воздействия – xxyxyzxxzxzyyzy, последовательность после третьего воздействия – xyxyxyzxxzxzyzy,

Примеры
Входные данные
15 6
xzxyyzxxzxyyzyx
a 2 10
a 15 4
q 3
a 12 2
q 14
q 2
Выходные данные
y
z
y
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

На олимпиаду по информатике пришло N участников. Известно, в каких школах учатся участники олимпиады. В компьютерном классе имеется N компьютеров, стоящих в линию вдоль стены. Вам необходимо рассадить участников олимпиады так, чтобы никакие два участника из одной школы не сидели рядом.

Формат входного файла

Программа получает на вход целое положительное число участников олимпиады \(N \le 1000\). Далее в N строках записаны номера школ, в которых учатся участники олимпиады. Номера школ — целые числа от 1 до 3000.

Формат выходного файла

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

Если задача не имеет решения, необходимо вывести одно число 0.

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

Примеры
Входные данные
4
1005
1005
5
2005
Выходные данные
1005 5 1005 2005 
Входные данные
4
1005
1005
2005
1005
Выходные данные
0
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

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

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

Иннокентий решил оценить масштабы трагедии. Для этого он попросил каждого из Q своих друзей сообщить маршрут, по которому они добираются до места работы. Каждый маршрут описывается тремя числами \(u_i\), \(v_i\), \(w_i\): \(u_i\) — это номер остановки, ближайшей к дому i-го друга, \(v_i\) — номер остановки, ближайшей к его работе, а \(w_i\) — номер автобуса,на котором i-й друг едет из дома на работу. При этом с точки зрения i-го друга автобусы нумеруются от \(1\) до \(M\) в том порядке, в котором они отправляются с остановки \(u_i\).

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

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

В первой строке входных данных содержатся два целых числа \(N\) и \(M\) — количество остановок и количество автобусов соответственно (\(2 \le N * M \le 150 000\)). В следующей строке содержатся \(N-1\) целых чисел \(travel_1\), . . . , \(travel_{N-1}\), где \(travel_i\) — минимальное время, необходимое для перемещения между остановками i и i + 1 (\(1 \le travel_i \le 10^9\)).

В следующих \(N\) строках содержатся описания расписаний, каждое из которых представляет собой отсортированный по возрастанию список из \(M\) различных целых чисел \(t_i\) — времен, в которые автобусы должны отправляться с соответствующей остановки (\(1 \le t_i \le 10^9\)).

В следующей строке содержится число T — тип теста (1 или 2). Если T = 1, то это — обычный тест. Тогда на следующей строке содержится целое число Q — количество опрошенных друзей Иннокентия (\(1 \le Q \le 150 000 \)). Далее в Q строках содержатся описания маршрутов друзей, каждое из которых состоит из трех целых чисел \(u_i\), \(v_i\) и \(w_i\): номеров остановок, где начинается и заканчивается поездка i-го друга, и номер автобуса в расписании остановки ui, на котором эта поездка совершается (\(1 \le u_i < v_i \le N, 1 \le w_i \le M\)).

\textbf{Обратите внимание} : дальнейшее описание относится только к последней группе тестов. Если T = 2, то это — тест-серия. Тогда на следующей строке содержатся три целых числа — A, B и K (\(1 \le A, B \le 10^3 , 1 \le K \le 150\)).

В \t{тесте-серии} у Иннокентия Q = (N -1)·M ·K друзей. На каждой из N - 1 остановок, кроме последней, проживает ровно M * K друзей, причем для каждого \(w\) от 1 до M есть ровно K друзей, которые уезжают с этой остановки w-м автобусом.

Остановки, до которых едут K друзей, уезжающих с u-й остановки w-м автобусом, определяются следующим образом. Задается последовательность чисел \(q_i\): \(q_1\) = A, \(q_2\) = B, для i > 2 \(q_i\) = u * \(q_{i-1}\) + w * \(q_{i-2}\) + 42. Тогда i-й из этих K друзей будет ехать до остановки с номером \(v_i\) = u + 1 + (\(q_i\) mod (N - u)), где mod обозначает операцию взятия остатка от деления.

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

Если это обычный тест, то выведите для каждого друга в отдельной строке единственное целое число - искомое максимальное время прибытия на конечную остановку в его маршруте. Если это тест-серия, то выведите единственное целое число — остаток от деления суммы максимальных времен прибытия для всех друзей Иннокентия на \(2^{32}\).

Примечание

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

Это \textbf{тест-серия}. В нем у Иннокентия 5 · 4 · 2 = 40 друзей. Например, с первой остановки вторым автобусом уезжают ровно пять друзей. Поясним, как в этом тесте для них определить конечные остановки. u = 1, w = 2. Строим последовательность \(q_i\): \(q_1\) = 9, \(q_2\) = 10, \(q_3\) = 1 · 10 + 2 · 9 + 42 = 70, \(q_4\) = 1 · 70 + 2 · 10 + 42 = 132, \(q_5\) = 1 · 132 + 2 · 70 + 42 = 314. По ней восстанавливаются конечные остановки для этих пяти друзей Иннокентия: \(v_1\) = 1 + 1 + (9 mod 4) = 3, \(v_2\) = 1 + 1 + (10 mod 4) = 4, \(v_3\) = 1 + 1 + (70 mod 4) = 4, \(v_4\) = 1 + 1 + (132 mod 4) = 2, \(v_5\) = 1 + 1 + (314 mod 4) = 4.

Система оценки

Тесты к этой задаче состоят из шести групп. Каждая группа, кроме нулевой, оценивается в 20 баллов. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов \textbf{предыдущих групп}, исключая тесты из условия. В группах тестов с первой по четвертую включительно вам предлагаются только обычные тесты.

0. Тесты 1—2. Тесты из условия, оцениваются в ноль баллов.

1. Тесты 3—12. В тестах этой группы \(N = 2, M \le 1 000, Q \le 1 000\).

2. Тесты 13—22. В тестах этой группы \(N = 2, M \le 75 000, Q \le 75 000\).

3. Тесты 23—37. В тестах этой группы \(N * M \le 150 000, N * Q \le 150 000\).

4. В тестах этой группы \(N * M \le 150 000, Q \le 150 000\).

5. В этой группе вам предлагаются только тесты-серии. Другие дополнительные ограничения отсутствуют.

Примеры
Входные данные
2 3
1
1 10 21
11 21 31
1
3
1 2 1
1 2 2
1 2 3
Выходные данные
21
21
31
Входные данные
5 2
2 5 3 4
1 3
3 5
10 11
13 14
18 23
2
9 10 5
Выходные данные
667
ограничение по времени на тест
0.25 second;
ограничение по памяти на тест
256 megabytes

Для хранения двух агрессивных жидкостей \(A\) и \(B\) используется емкость с многослойной перегородкой, которая изготавливается из имеющихся \(N\) листов. Для каждого листа \(i\) (\(i\) = 1, ..., \(N\)) известно время его растворения жидкостью \(A\) - \(a_i\) и жидкостью \(B\) - \(b_i\). Растворение перегородки каждой из жидкостей происходит последовательно лист за листом, с постоянной скоростью по толщине листа. Требуется спроектировать такую перегородку, время растворения которой было бы максимальным.

В первой строке входного файла записано число \(N\) (1 ≤ \(N\) ≤ 256). В каждой из последующих N строк содержатся два положительных вещественных числа \(a_i\) и \(b_i\), разделенные пробелом.

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

В первую строку выходного файла записать время растворения перегородки с точностью до 3 цифр после десятичной точки. В следующую строку файла записать номера листов в порядке их расположения от жидкости A к жидкости B, разделяя числа пробелами.

Примеры
Входные данные
4
1 2
1 2
0.5 1.5
7 3.5
Выходные данные
6.00000000
4 2 1 3 

Страница: << 10 11 12 13 14 15 16 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест