Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Например, при n = 10, a1 = 12345 получается следующий массив: a = (12345, 305498, 7048017,
11694653, 1565158, 2591019, 9471233, 570265, 13137658, 1325095).
Запросы генерируются следующим образом:
ui+1 = (17 · ui + 751 + ansi + 2i) mod n + 1,
vi+1 = (13 · vi + 593 + ansi + 5i) mod n + 1,
Страница 1 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Задача B. LCA
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 5 секунд
Ограничение по памяти: 256 мегабайт
Дано подвешенное дерево с корнем в первой вершине. Вам нужно ответить на m запросов вида
“найти LCA двух вершин“.
LCA вершин u и v в подвешенном дереве — это наиболее удалённая от корня дерева верши-
на, лежащая на обоих путях от u и v до корня.
Формат входных данных
В первой строке задано целое число n — число вершин в дереве (1 6 n 6 2 · 105 ).
В следующих n − 1 строках записано одно целое число x. Число x на строке i означает, что x —
предок вершины i(x < i).
Затем дано число m.
Далее заданы m (0 6 m 6 5 · 105 ) запросов вида (u, v) — найти LCA двух вершин u и v
(1 6 u, v 6 n; u 6= v).
Формат выходных данных
Для каждого запроса выведите LCA двух вершин на отдельной строке.
Примеры
стандартный ввод стандартный вывод
5 1
1 1
1
2
3
2
2 3
4 5
5 2
1 2
1 1
2
2
3
4 5
4 2
3 5
Страница 2 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Страница 3 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Например, при n = 10, a1 = 12345 получается следующий массив: a = (12345, 305498, 7048017,
11694653, 1565158, 2591019, 9471233, 570265, 13137658, 1325095).
Запросы генерируются следующим образом:
ui+1 = (17 · ui + 751 + ansi + 2i) mod n + 1,
vi+1 = (13 · vi + 593 + ansi + 5i) mod n + 1,
Страница 4 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Задача E. Прямоугольники
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2.5 секунд
Ограничение по памяти: 256 мегабайт
Замечание
В первом примере запрос имеет вид (1,0,0,1), то есть это запрос ко всей таблице. Пересечением
всех прямоугольников является квадрат c углами в точках (1, 1) и (2, 2). Его площадь равна 1.
Во втором примере запросы имеют вид (0,1,1,1), (1,0,2,0), (0,0,2,1), (0,1,1,1), (0,1,0,0).
На второй запрос ответ — 85, на остальные — 0.
Страница 5 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Страница 6 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Задача G. Usmjeri
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 мегабайт
Нам дано дерево с N узлами, обозначенными различными положительными целыми числами от
1 до N. Кроме того, вам дано M пар узлов из дерева в форме (a1, b1), (a2, b2),. . . , (aM, bM). Нам
нужно направить каждое ребро дерева таким образом, чтобы для каждой данной пары узлов (ai,
bi) был путь от ai до bi или от bi до ai. Сколько существует способов достичь этого? Поскольку
решение может быть довольно большим, определите его по модулю 109 + 7.
Формат входных данных
В первой строке входных данных содержатся натуральные числа N и M (1 6 N, M 6 3 ∗ 105 ),
количество узлов в дереве и количество заданных пар узлов соответственно. Каждый из следующих
N — 1 Строки содержат два положительных целых числа, метки узлов, связанных с ребром. i-я из
следующих M строк содержит два разных положительных целых числа ai и bi, метки узлов из i-й
пары узлов. Все пары узлов будут взаимно разными.
Формат выходных данных
Вы должны вывести одну строку, содержащую общее количество различных способов направле-
ния ребер дерева, которые отвечают требованию задачи, по модулю 109 + 7.
Примеры
стандартный ввод стандартный вывод
4 1 4
1 2
2 3
3 4
2 4
7 2 8
1 2
1 3
4 2
2 5
6 5
5 7
1 7
2 6
4 3 0
1 2
1 3
1 4
2 3
2 4
3 4
Замечание
Дерево — это граф, который состоит из N узлов и N - 1 ребер, так что существует путь от
каждого узла к каждому другому узлу.
Страница 7 из 8
Летняя ШОП 2019, параллель A, день 1, Спарс + LCA
Университет Иннополис, 7 июля 2019
Задача H. Антивещество
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2 секунды
Ограничение по памяти: 128 мегабайт
Компания тестирует технологию получения антивещества, используемого в качестве топлива
в межпланетном звездолёте. Антивещество получается в результате специальных экспериментов в
реакторе.
Известно n типов экспериментов, приводящих к получению антивещества. В результате про-
ведения эксперимента i-го типа в выходной контейнер реактора добавляется от li до ri граммов
антивещества. Из соображений безопасности запрещается накапливать в контейнере более a грам-
мов антивещества.
Затраты на проведение эксперимента i-го типа составляют ci , а стоимость одного грамма полу-
ченного антивещества составляет 109 .
Если после проведения экспериментов в контейнере образовалось t граммов антивещества, а
суммарные затраты на проведение экспериментов в реакторе составили s, то прибыль определяется
по формуле (t · 109 − s). Компании необходимо разработать стратегию проведения экспериментов,
позволяющую максимизировать прибыль, которую можно гарантированно получить.
В зависимости от результатов предыдущих экспериментов стратегия определяет, эксперимент
какого типа следует провести, или решает прекратить дальнейшее выполнение экспериментов. Стра-
тегия позволяет гарантированно получить прибыль x, если при любых результатах проведения
экспериментов: во-первых, в контейнере реактора оказывается не более a граммов антивещества,
во-вторых, прибыль составит не менее x.
Например, пусть возможен только один тип эксперимента, порождающий от 4 до 6 граммов
антивещества, затраты на его проведение равны 10, а вместимость контейнера составляет 17 грам-
мов. Тогда после двукратного проведения эксперимента в контейнере может оказаться от 8 до 12
граммов антивещества. Если получилось 12 граммов, то больше проводить эксперимент нельзя, так
как в случае получения 6 граммов антивещества контейнер может переполниться. В остальных слу-
чаях можно провести эксперимент в третий раз и получить от 12 до 17 граммов антивещества. В
худшем случае придётся провести эксперимент трижды, затратив в сумме 30, прибыль составит
(12 · 109 − 30) = 11 999 999 970.
Требуется написать программу, которая определяет максимальную прибыль x, которую гаран-
тированно можно получить.
Формат входных данных
Первая строка входных данных содержит два целых числа: n — количество типов экспери-
ментов и a — максимально допустимое количество антивещества в контейнере (1 6 n 6 100,
1 6 a 6 2 000 000).
Следующие n строк содержат по три целых числа li , ri и ci — минимальное и максимальное
количество антивещества, получаемое в результате эксперимента типа i, и затраты на эксперимент
этого типа, соответственно (1 6 li 6 ri 6 a, 1 6 ci 6 100).
Формат выходных данных
Выходные данные должны содержать одно целое число — максимальную прибыль x, которую
гарантированно можно получить.
Примеры
стандартный ввод стандартный вывод
1 17 11999999970
4 6 10
2 11 9999999890
2 2 100
3 5 5
Страница 8 из 8