Processing math: 100%

4-й этап Республиканской олимпиады по информатике 2021-2022, 2 тура


Задача A. Покраска суммой

Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт

У вас есть массив целых чисел a1,,an размера n. Изначально каждое число массива покрашено в белый цвет. За одну операцию вы можете:
  1. Выбрать три белых числа (ai,aj,ak) (1<=i,j,k<=n, ij, ik, jk).
  2. Если значение ai+aj строго больше ak, покрасить ak в черный цвет.
Вы обязаны повторять эту операцию до тех пор, пока это возможно. В процессе некоторые числа будут перекрашены в черный цвет, а остальные — останутся белыми. От вас требуется посчитать количество всевозможных конечных раскрасок.
Формат входного файла
В первой строке входного файла дано одно целое число n — размер массива (3<=n<=105). Во второй строке даны n целых чисел a1,,an (109<=ai<=109).
Формат выходного файла
Выведите одно целое число — количество всевозможных конечных раскрасок. Можно показать, что в заданных ограничениях ответ никогда не превосходит 1018.
Примеры:
Вход
3
2 2 5
Ответ
2
Вход
4
-3 1 2 2
Ответ
3

комментарий/решение(2) Проверить мое решение

Задача B. MEXI

Ограничение по времени:
1.5 секунд
Ограничение по памяти:
512 мегабайт

Аза решал следующию задачу от Нархана: Вам задан массив a, состоящий из n целых неотрицательных чисел. Назовем разделение массива a на k отрезков (l1,r1),,(lk,rk) x- хорошим, если выполняются следующие условия:
  • Каждый элемент массива a принадлежит ровно одному отрезку.
  • Для каждого 1<=i<=k, MEX чисел (ali,,ari) был меньше или равен x.
В этой задаче MEX некоторого массива — это минимальное неотрицательное целое число, которое не содержится в этом массиве. Например:
  • MEX для [2,2,1] равен 0, поскольку 0 не принадлежит массиву.
  • MEX для [3,1,0,1] равен 2, поскольку 0 и 1 принадлежат массиву, а 2 — нет.
  • MEX для [0,3,1,2] равен 4, поскольку 0, 1, 2 и 3 принадлежат массиву, а 4 — нет.
Размером x хорошего разделение является количество отрезков на которое оно было разделено — то есть k. Вам нужно для каждого целого числа x от 0 до n1 вывести минимальный возможный размер x хорошего разделения, если данное разделение невыполнимо выведите 1.
Формат входного файла
Первая строка содержит одно целое число — n (1<=n<=106). Вторая строка содержит n целых чисел a1,a2,,an (0<=ai<=106) — массив a.
Формат выходного файла
Выведите n целых чисел, где i-е число — это минимальный возможный размер x хорошего разделения при x=i1, если данное разделение невыполнимо выведите 1.
Примеры:
Вход
4
0 1 0 2
Ответ
-1 3 2 1
Вход
1
2
Ответ
1
Замечание
В первом примере:
  • при x=0, не существует хорошего разделения массива, поэтому выводим 1.
  • при x=1, делим на 3 отрезка: [0],[1],[0,2].
  • при x=2, делим на 2 отрезка: [0,1], [0,2].
  • при x=3, один отрезок - сам массив [0,1,0,2].

комментарий/решение(4) Проверить мое решение

Задача C. Запросы на перестановке

Ограничение по времени:
1.5 секунд
Ограничение по памяти:
256 мегабайт

У вас есть перестановка p1,,pn и массив целых чисел a1,,an, который изначально заполнен нулями. Вам нужно обработать q запросов одного из трёх типов:
  • 1lrx: для всех l<=i<=r, добавить x к api.
  • 2lr: вычислить и вывести al+al+1++ar.
  • 3ab: поменять местами pa и pb.
Формат входного файла
В первой строке записаны два целых числа n и q (2<=n,q<=105) — размер перестановки и количество запросов. Во второй строке записаны n целых чисел p1,,pn (1<=pi<=n, pipj если ij). Каждая из следующих q строк содержат описания запросов Каждый запрос задан в одном из следующих форматов в зависимости от типа запроса: 1lrx (1<=l<=r<=n, 1<=x<=105) для запросов первого типа. 2lr (1<=l<=r<=n) для запросов второго типа. 3ab (1<=a,b<=n, ab) для запросов третьего типа.
Формат выходного файла
Выведите ответы на все запросы второго типа, каждый ответ в отдельной строке.
Пример:
Вход
6 9
4 6 3 1 2 5
1 4 5 3
3 3 5
1 2 3 6
3 3 6
3 2 1
2 1 5
2 1 6
1 1 5 6
2 4 6
Ответ
12
18
24

комментарий/решение(2) Проверить мое решение

Задача D. Витя - черепашка ниндзя 2

Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт

Дается прямоугольная таблица N×M, в каждой клетке записано какое-то число. Витя находится в левой верхней клетке, его цель добраться до правого нижнего угла. За один ход ему разрешается перемещаться в соседнюю клетку либо вправо, либо вниз (влево и вверх перемещаться запрещено). За посещение клетки, Витя должен платить число указанное в этой клетке. Дончик владелец таблицы. Он решил сделать скидку своему другу Вите, разрешив платить только за самые дорогие(наибольшие по значению) K клеток на его пути от левого верхнего угла в правый нижний. Какое минимальное количество денег потратит Витя для достижения своей цели?
Формат входного файла
В первой строке даны три целых числа N,M и K (1<=N,M<=500, 1<=K<=N+M1). В следующих N строках даны по M целых чисел — j-е число на i-й строке ai,j (0<=ai,j<=500) является числом на клетке в i-й строке и j-м столбце таблицы.
Формат выходного файла
Выведите одно целое число — ответ на задачу.
Примеры:
Вход
3 3 5
1 1 1
6 6 10
1 7 3
Ответ
16
Вход
4 4 2
1 3 2 6
7 4 5 2
1 4 6 7
1 0 1 0
Ответ
8
Замечание

Зеленым выделен путь Вити.

В первом примере, он заплатит за все посещенные клетки. Во втором примере, оптимально будет пройти через клетки со значениями 1,3,4,4,0,1,0, и заплатит за максимальные два(K=2) из них, т.е 4+4=8.

комментарий/решение(1) Проверить мое решение

Задача E. Шоколадки

Ограничение по времени:
2.5 секунд
Ограничение по памяти:
256 мегабайт

Айбар и Данияр решили купить шоколадки перед олимпиадой. Допустим, в магазине продаются n видов шоколадок пронумерованных от 1 до n. У каждого вида шоколадки i есть свой уровень сладости ai. Айбар и Данияр договорились покупать шоколадки по следующей нехитрой схеме:
  • Сперва Айбар купит шоколадку с самой большой сладостью. Затем Данияр тоже купит шоколадку с самой большой сладостью среди других видов шоколадок. Более формально, если Айбар купил шоколадку вида i, Данияр должен купить шоколадку вида ji такую, что её сладость самая большая.
  • Теперь Айбар купит шоколадку с самой маленькой сладостью. Затем Данияр тоже купит шоколадку с самой маленькой сладостью среди других видов шоколадок. Более формально, если Айбар купил шоколадку вида i, Данияр должен купить шоколадку вида ji такую, что её сладость самая маленькая.
В конце Айбар и Данияр суммируют сладости купленных ими шоколадок. Если их посчитанные суммы оказываются одинаковыми, то побеждает дружба. Например, если бы в магазине продавали n=4 видов шоколадок со сладостями [1,4,6,3], то Айбар бы купил шоколадки вида 3 и 1 с суммарной сладостью 6+1=7. А Данияр бы купил шоколадки вида 2 и 4 с суммарной сладостью 4+3=7 и в конце победила бы дружба. В этой задаче можно считать что есть не менее двух шоколадок каждого вида. Если бы в магазине было всего лишь n=2 видов шоколадок, они оба купили бы по одной шоколадке вида 1 и 2. Друзья решили не мелочиться и сразу зайти в супермаркет. В супермаркете продаются n видов шоколадок со сладостями b1,,bn. Теперь друзьям стало интересно, сколько есть пар 1<=i<j<=n таких, что если друзья будут покупать шоколадки только среди видов (i,,j) победит дружба?
Формат входного файла
В первой строке дано одно целое число n — количество видов шоколадок в супермаркете (2<=n<=250000). Во второй строке даны n чисел b1,,bn (1<=bi<=109).
Формат выходного файла
Выведите одно целое число — количество искомых пар.
Примеры:
Вход
3
1 2 3
Ответ
3
Вход
5
1 1 3 2 1
Ответ
6
Замечание
Во втором примере, подходят следующие пары: (1,2),(2,3),(2,4),(3,4),(3,5),(4,5)

комментарий/решение Проверить мое решение

Задача F. Нархан и скобочки

Ограничение по времени:
1.5 секунд
Ограничение по памяти:
256 мегабайт

Недавно на уроке информатики Нархан проходил скобочные последовательности. После этого он захотел придумать обозначение k-особенной скобочной последовательности. Давайте рассмотрим скобочную последовательность длины n, где n - четное. Нархан сперва выбрал для каждого индекса особенная она или нет. Теперь он считает скобочную последовательность k-особенной, если на особенных индексах стоят ровно k открывающихся скобок и сама последовательность является правильной скобочной последовательностью. Также он хочет определить красоту этой скобочной последовательности и для этого у него есть массив из n положительных целых чисел a1,a2,an. Давайте выпишем все индексы k-особенной скобочной последовательности где стоят открывающиеся скобки, пусть это i1,i2,,im. Тогда красотой этой последовательности для Нархана будет - ai1+ai2++aim. Вам известны числа n и k, массив a1,a2,an, а также какие позиции особенные. Помогите Нархану найти среди всех k-особенных скобочных последовательностей максимальную возможную красоту, так как эта задача для него является непосильной. Определение правильной скобочной последовательности смотрите в примечаниях.
Формат входного файла
Первая строка содержит два целых числа - n и k (2<=n<=2105,0<=k<=n) . Гарантируется, что n - четное. Во второй строке n целых числа a1,,an (1<=ai<=109) - значения элементов массива. В третьей строке n чисел c1,,cn (ci={0,1}). ci=1 означает, что индекс i - особенный, иначе нет.
Формат выходного файла
Если нет ни одной k-особенной скобочной последовательности длины n выведите 1. Иначе выведите максимальную красоту среди всех k-особенных скобочных последовательностей
Примеры:
Вход
6 3
1 6 3 4 7 3
1 1 1 1 1 1
Ответ
14
Вход
6 0
1 2 3 4 5 6
1 0 0 0 0 0
Ответ
-1
Вход
8 3
7 9 12 5 6 6 8 9
0 1 1 0 1 1 1 0
Ответ
36
Замечание
Напомним, что такое правильная скобочная последовательность:
  • <<()>> — правильная скобочная последовательность;
  • если s — правильная скобочная последовательность, то <<(>> + s + <<)>> — правильная скобочная последовательность;
  • если s и t — правильные скобочные последовательности, то s+t — правильная скобочная последовательность.
Например, <<()()>>, <<(())()>>, <<(())>> и <<()>> являются правильными скобочными последовательностями, а <<)(>>, <<()(>> и <<)))>> — нет.

комментарий/решение Проверить мое решение