Processing math: 100%

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), чтобы значение |ai1aj1|+|ai2aj2|++|aikajk| было минимально.
Формат входного файла
В первой строке находятся одно целое число n (1<=n<=2105). Во второй строке находятся n целых чисел a1,a2,,an(1<=ai<=109).
Формат выходного файла
Выведите n2 целых чисел, где k-е число является ответом k пар.
Система оценки
Данная задача содержит 6 подзадач, в которых выполняются следующие ограничения:
  1. n<=11. Оценивается в 7 баллов.
  2. n<=18. Оценивается в 11 баллов.
  3. n<=500. Оценивается в 13 баллов.
  4. n<=5000. Оценивается в 15 баллов.
  5. ai<=5000. Оценивается в 13 баллов.
  6. Исходные условия задачи. Оценивается в 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, которые означают что подстрока (sl1sl1+x1) должна быть равна подстроке (sl2sl2+x1). Вам нужно заменить каждый символ `?' на строчную латинскую букву так чтобы выполнялись все m условия. Среди всех таких строк, найдите лексикографически минимальную. Строка a лексикографический меньше строки b, если
Формат входного файла
В первой строке находится одно целое число n(1<=n<=300000). Во второй строке находится строка s, состоящая из n строчных латинских букв и символов `?'. В третьей строке находится одно целое число m(1<=m<=300000). В следующих m строках записаны по три целых числа l1, l2 и x (1<=l1,l2<=nx+1), означающие что подстрока (sl1sl1+x1) равна подстроке (sl2sl2+x1).
Формат выходного файла
Выведите лексикографически минимальную строку, которая удовлетворяет всем условиям, либо 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 перекрестков соединённых n1 дорогой, где от любого перекрестка можно добраться до любого другого перекрестка двигаясь по дорогам. В планах было начать бегать с воскресенья, однако в этот же день был назначен городской ежегодный веломарафон Канто. Определим маршрут (a,b), что a<b, множеством дорог, которые лежат на кратчайшем пути между стартовым перекрестком a и конечным перекрестком b. Длиной маршрута (a,b) будем называть количество дорог по которым он проходит. Есмахан не хочет бегать по занятым дорогам веломарафона во время пробежки. На вход дается n количество перекрёстков в городе Канто. Далее дается n1 дорога соединяющая два перекрестка. Гарантируется, что дается дороги таким образом, что от любого перекрестка можно добраться до любого другого перекрестка переходя только по дорогам. После дается q количество запросов на которые вы должны ответить. Запросы даются двух видов:
  1. x y, в нем вы должны ответить длиной самого длинного маршрута если веломарафон будет проходить через маршрут (x,y).
  2. k, в нем должны ответить количеством различных маршрутов (x,y), что Есмахан выберет маршрут длиной k.
Выведите ответ на каждый запрос. Поэтому хочет выяснить длину самого длинного маршрута (u,v) который будет проходить по свободным дорогам от веломарафона маршрутом (x,y), чтобы его пробежка была максимальна. Так же, Есмахан хочет выяснить сколько возможных маршрутов (x,y) веломарафона возможно, что его пробежке будет длины k?
Формат входного файла
Первая строка содержит одно целое число n (2<=n<=5105), обозначающее количество перекрестков в городе Канто. В каждой из следующих n1 строк содержится описание дорог: два целых числа u и v (1<=v,u<=n,uv). Следующая строка содержит одно целое число q (1<=q<=5105), обозначающее количество запросов. Следующие q строк содержат описания запросов. Каждый запрос задан в одном из следующих форматов в зависимости от типа запроса: 1 x y (1<=x<y<=n) для запросов первого типа. 2 k (0<=k<=n1) для запросов второго типа.
Формат выходного файла
Для каждого запроса выведите ответ на него.
Система оценки
Данная задача содержит 10 подзадач, в которых выполняются следующие ограничения:
  1. Примеры из условия. Оценивается в 0 баллов.
  2. n<=1000. Гарантируется, что ui=i, vi=i+1 для всех i (1<=i<n). Оценивается в 8 баллов.
  3. Гарантируется, что ui=i, vi=i+1 для всех i (1<=i<n). Оценивается в 10 баллов.
  4. n,q<=500. Оценивается в 9 баллов.
  5. n,q<=3000. Оценивается в 11 баллов.
  6. Гарантируется, что все запросы 1-типа и xi=1 для всех i (1<=i<=q). Оценивается в 12 баллов.
  7. Гарантируется, что все запросы 1-типа. Оценивается в 12 баллов.
  8. q<=10. Оценивается в 11 баллов.
  9. ui=i+1,vi=i+12 для всех i (1<=i<n). Оценивается в 10 баллов.
  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<=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
Замечание
Напомним, что такое правильная скобочная последовательность: Например, <<()()>>, <<(())()>>, <<(())>> и <<()>> являются правильными скобочными последовательностями, а <<)(>>, <<()(>> и <<)))>> — нет. ( Narkhan Kamzabek )
комментарий/решение олимпиада