Narkhan Kamzabek
Задача №1.
Задача D. Оптимизировать!
Ограничение по времени:
3 секунды
Ограничение по памяти:
512 мегабайт
Дан массив a длины n (a1,a2,...,an). И заданы q запросов. Для каждого запроса задано l,r (1<=l<=r<=n). Вам дан псевдокод его решения, где число c ответ на запрос:
int c = 0 for(int i = l...r) c = (c + a[i] + abs(c - a[i])) / 2 print(c).Это слишком медленно. Так что оптимизируйте это!
Формат входного файла
В первой строке записано одно целое число n (1<=n<=106) — длина массива.
Во второй строке записано n целых чисел a1,a2,...,an (1<=|ai|<=109) — сам массив.
В третьей строке записано одно число q (1<=q<=106) — количество запросов.
В каждой из следующих q строк записано по два целых числа l и r (1<=l<=r<=n), описывающих один запрос.
Формат выходного файла
Найди c для каждого запроса.
Пример:
Вход 10 1 6 3 88 2 9 45 78 23 6 5 1 3 4 5 6 10 5 7 2 7Ответ
6 88 78 45 88( Narkhan Kamzabek )
комментарий/решение(6) олимпиада
Задача №2.
Задача D. Оптимизировать!
Ограничение по времени:
3 секунды
Ограничение по памяти:
512 мегабайт
Дан массив a длины n (a1,a2,...,an). И заданы q запросов. Для каждого запроса задано l,r (1<=l<=r<=n). Вам дан псевдокод его решения, где число c ответ на запрос:
int c = 0 for(int i = l...r) c = (c + a[i] + abs(c - a[i])) / 2 print(c).Это слишком медленно. Так что оптимизируйте это!
Формат входного файла
В первой строке записано одно целое число n (1<=n<=106) — длина массива.
Во второй строке записано n целых чисел a1,a2,...,an (1<=|ai|<=109) — сам массив.
В третьей строке записано одно число q (1<=q<=106) — количество запросов.
В каждой из следующих q строк записано по два целых числа l и r (1<=l<=r<=n), описывающих один запрос.
Формат выходного файла
Найди c для каждого запроса.
Пример:
Вход 10 1 6 3 88 2 9 45 78 23 6 5 1 3 4 5 6 10 5 7 2 7Ответ
6 88 78 45 88( Narkhan Kamzabek )
комментарий/решение(6) олимпиада
Задача №3.
Задача C. Разделяем на пары
Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт
Есть массив a из n целых чисел. Для каждого k от 1 до ⌊n2⌋, найдите k различных пар, что сумма абсолютных разностей пар была минимизирована. Более формально, выберите 2k различных индексов, и разбейте их на k пар (i1,j1),(i2,j2),…,(ik,jk), чтобы значение |ai1−aj1|+|ai2−aj2|+⋯+|aik−ajk| было минимально.
Формат входного файла
В первой строке находятся одно целое число n (1<=n<=2∗105).
Во второй строке находятся n целых чисел a1,a2,…,an(1<=ai<=109).
Формат выходного файла
Выведите ⌊n2⌋ целых чисел, где k-е число является ответом k пар.
Система оценки
Данная задача содержит 6 подзадач, в которых выполняются следующие ограничения:
- n<=11. Оценивается в 7 баллов.
- n<=18. Оценивается в 11 баллов.
- n<=500. Оценивается в 13 баллов.
- n<=5000. Оценивается в 15 баллов.
- ai<=5000. Оценивается в 13 баллов.
- Исходные условия задачи. Оценивается в 41 баллов.
Примеры:
Вход 6 1 3 5 8 13 21Ответ
2 5 13Вход
11 31 12 1 36 41 57 21 79 86 63 97Ответ
5 11 18 27 39( Narkhan Kamzabek )
комментарий/решение олимпиада
Задача №4.
Задача C. Восстановление строки
Ограничение по времени:
3 секунды
Ограничение по памяти:
256 мегабайт
Вам дана строка s длины n, состоящая из строчных латинских букв и символов `?'. Также, вам даны m условий. Каждое условие описывается тремя целыми числами l1, l2 и x, которые означают что подстрока (sl1…sl1+x−1) должна быть равна подстроке (sl2…sl2+x−1). Вам нужно заменить каждый символ `?' на строчную латинскую букву так чтобы выполнялись все m условия. Среди всех таких строк, найдите лексикографически минимальную. Строка a лексикографический меньше строки b, если
- либо первые k символов этих строк совпадают, а k+1-й символ в a алфавитном порядке идет раньше k+1-го символа строки b. Например, abcdef<abdaaaa, так как первые два символа совпадают, а третья буква первой строки(c) в алфавитном порядке идет раньше третьей буквы второй строки(d).
- либо строка a является префиксом строки b. Например, abc<abcde.
Формат входного файла
В первой строке находится одно целое число n(1<=n<=300000).
Во второй строке находится строка s, состоящая из n строчных латинских букв и символов `?'.
В третьей строке находится одно целое число m(1<=m<=300000).
В следующих m строках записаны по три целых числа l1, l2 и x (1<=l1,l2<=n−x+1), означающие что подстрока (sl1…sl1+x−1) равна подстроке (sl2…sl2+x−1).
Формат выходного файла
Выведите лексикографически минимальную строку, которая удовлетворяет всем условиям, либо −1, если такой строки не существует.
Примеры:
Вход 10 a?b?b???b? 3 1 4 3 7 9 2 3 10 1Ответ
abbabbbbbbВход
6 a????b 5 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1Ответ
-1( Narkhan Kamzabek )
комментарий/решение(2) олимпиада
Задача №5.
Задача C. Марафон Канто
Ограничение по времени:
2 секунды
Ограничение по памяти:
256 мегабайт
Скоро лето, Есмахан решил, что пора начать бегать по утрам в своем городе Канто. Город Канто представляет собой n перекрестков соединённых n−1 дорогой, где от любого перекрестка можно добраться до любого другого перекрестка двигаясь по дорогам. В планах было начать бегать с воскресенья, однако в этот же день был назначен городской ежегодный веломарафон Канто. Определим маршрут (a,b), что a<b, множеством дорог, которые лежат на кратчайшем пути между стартовым перекрестком a и конечным перекрестком b. Длиной маршрута (a,b) будем называть количество дорог по которым он проходит. Есмахан не хочет бегать по занятым дорогам веломарафона во время пробежки. На вход дается n количество перекрёстков в городе Канто. Далее дается n−1 дорога соединяющая два перекрестка. Гарантируется, что дается дороги таким образом, что от любого перекрестка можно добраться до любого другого перекрестка переходя только по дорогам. После дается q количество запросов на которые вы должны ответить. Запросы даются двух видов:
- x y, в нем вы должны ответить длиной самого длинного маршрута если веломарафон будет проходить через маршрут (x,y).
- k, в нем должны ответить количеством различных маршрутов (x,y), что Есмахан выберет маршрут длиной k.
Формат входного файла
Первая строка содержит одно целое число n (2<=n<=5∗105), обозначающее количество перекрестков в городе Канто.
В каждой из следующих n−1 строк содержится описание дорог: два целых числа u и v (1<=v,u<=n,u≠v).
Следующая строка содержит одно целое число q (1<=q<=5∗105), обозначающее количество запросов.
Следующие q строк содержат описания запросов.
Каждый запрос задан в одном из следующих форматов в зависимости от типа запроса:
1 x y (1<=x<y<=n) для запросов первого типа.
2 k (0<=k<=n−1) для запросов второго типа.
Формат выходного файла
Для каждого запроса выведите ответ на него.
Система оценки
Данная задача содержит 10 подзадач, в которых выполняются следующие ограничения:
- Примеры из условия. Оценивается в 0 баллов.
- n<=1000. Гарантируется, что ui=i, vi=i+1 для всех i (1<=i<n). Оценивается в 8 баллов.
- Гарантируется, что ui=i, vi=i+1 для всех i (1<=i<n). Оценивается в 10 баллов.
- n,q<=500. Оценивается в 9 баллов.
- n,q<=3000. Оценивается в 11 баллов.
- Гарантируется, что все запросы 1-типа и xi=1 для всех i (1<=i<=q). Оценивается в 12 баллов.
- Гарантируется, что все запросы 1-типа. Оценивается в 12 баллов.
- q<=10. Оценивается в 11 баллов.
- ui=i+1,vi=⌊i+12⌋ для всех i (1<=i<n). Оценивается в 10 баллов.
- Исходные условия задачи. Оценивается в 17 баллов.
Пример:
Вход 8 1 2 2 3 2 4 3 5 1 6 4 7 7 8 6 2 3 1 4 6 1 1 8 2 4 1 2 3 2 2Ответ
4 2 2 6 5 12
Замечание
В первом запросе следущие четыре веломаршрута заставят Есмахана выбрать маршрут длины 3: (1, 3), (1, 5), (3, 6), (5, 6).
Во втором запросе два самых длинных маршрутов длины 2: (2, 5) и (4, 8).
В третьем запросе один самый длинный маршрут длины 2: (2, 5).
В четвертом запросе следущие шесть веломаршрутов заставят Есмахана выбрать маршрут длины
4: (2, 4), (2, 7), (2, 8), (4, 7), (4, 8), (7, 8).
В пятом запросе один самый длинный маршрут длинны 5: (6, 8).
В шестом запросе ответ 12.
(
Narkhan Kamzabek
)
комментарий/решение олимпиада
Задача №6.
Задача 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<=2∗105,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 — правильная скобочная последовательность.
комментарий/решение олимпиада