---> 279 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 50 51 52 53 54 55 56 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
512 megabytes

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

Будем называть последовательность, состоящую из целых положительных чисел, корректной , если первое число в этой последовательности является минимальным, а последнее — максимальным. Например, последовательности [1, 3, 2, 4] и [1, 2, 1, 2] являются корректными, а последовательность [1, 3, 2] — нет.

Задана последовательность [ a 1 , a 2 , ..., a n ] . Будем называть отрезок элементов заданной последовательности [ a l , a l + 1 , ..., a r ] корректным, если он представляет собой корректную последовательность: a l является минимальным числом на этом отрезке, а a r — максимальным.

В рамках исследования необходимо разбить заданную последовательность на минимальное количество непересекающихся корректных отрезков. Например, последовательность [2, 3, 1, 1, 5, 1] можно разбить на три корректных отрезка: [2, 3] и [1, 1, 5] и [1] .

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

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

Первая строка входных данных содержит целое число n ( 1 ≤ n ≤ 300 000 ) — количество элементов в заданной последовательности.

Вторая строка содержит n целых чисел a 1 , a 2 , ..., a n — заданную последовательность ( 1 ≤ a i ≤ 10 9 ).

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

Выведите одно число — минимальное количество корректных отрезков, на которое можно разбить заданную последовательность.

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

Примеры
Входные данные
5
5 4 3 2 1
Выходные данные
5
Входные данные
4
1 3 2 4
Выходные данные
1
Входные данные
6
2 3 1 1 5 1
Выходные данные
3
ограничение по времени на тест
5.0 second;
ограничение по памяти на тест
512 megabytes

Скажем, что последовательность строк t 1 , ..., t k является путешествием длины k , если для всех i > 1 t i является подстрокой t i - 1 строго меньшей длины. Например, { ab , b } является путешествием, а { ab , c } или { a , a } — нет.

Определим путешествие по строке s как путешествие t 1 , ..., t k , все строки которого могут быть вложены в s так, чтобы существовали (возможно, пустые) строки u 1 , ..., u k + 1 , такие, что s = u 1 t 1 u 2 t 2 ... u k t k u k + 1 . К примеру, { ab , b } является путешествием по строке для abb , но не для bab , так как соответствующие подстроки расположены справа налево.

Назовём длиной путешествия количество строк, из которых оно состоит. Определите максимально возможную длину путешествия по заданной строке s .

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

В первой строке задано целое число n ( 1 ≤ n ≤ 500 000 ) — длина строки s .

Во второй строке содержится строка s , состоящая из n строчных английских букв.

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

Выведите одно число — наибольшую длину путешествия по строке s .

Примечание

В первом примере путешествием по строке наибольшей длины является { abcd , bc , c } .

Во втором примере подходящим вариантом будет { bb , b } .

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

В Берляндии по воскресеньям проходит известое шоу — игра «Слабое звено».

В игре принимают участие \(n\) игроков, которые выстраиваются в круг. Каждому игроку сопоставлен рейтинг — некоторое целое число \(a_i\).

Игра проходит в несколько раундов, каждый из которых выглядит следующим образом:

  • В очередном раунде принимают участие все ещё не выбывшие игроки.

  • Все игроки, которые по рейтингу строго слабее обоих своих соседей по кругу, объявляются слабым звеном и выбывают из игры.

  • Все оставшиеся участники сдвигаются чуть плотнее, чтобы снова образовывать круг.

  • Игра заканчивается, если после очередного раунда осталось ровно два человека или если после очередного раунда не выбыл ни один человек.

  • Иначе начинается новый раунд.

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

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

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

В первой строке дано одно целое число \(n\) (\(2 \le n \le 200\,000\)) — количество участников в игре.

Вторая строка содержит \(n\) целых чисел \(a_i\) (\(1 \le a_i \le 200\,000\)) — рейтинги всех участников игры в том порядке, в котором они стоят, при этом участник с номером \(n\) является соседом участника с номером \(1\).

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

Выведите \(n\) целых чисел — номер раунда, в котором участник игры с номером \(i\) покинет игру, или \(0\), если этот игрок останется до конца игры.

Раунды нумеруются последовательными целыми числами начиная с \(1\).

Примечание

В первом примере игра проходит следующим образом (при помощи _ обозначаются выбывшие участники):

\([4; 5; 5; 2; 3] \to [4; 5; 5; \_; 3] \to [4; 5; 5; \_; \_] \to [\_; 5; 5; \_; \_]\)

После этого игра заканчивается, так как осталось ровно два человека.

Во втором примере игра проходит следующим образом:

\([5; 1; 3; 1; 5] \to [5; \_; 3; \_; 5] \to [5; \_; \_; \_; 5]\)

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

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

Назовем подпоследовательностью массива \(a\) непустой массив \(b\) такой, что он может быть получен из массива \(a\) удалением нескольких (возможно, никаких) элементов массива \(a\). Например, массив \([1, 3]\) является попоследовательностью массива \([1, 2, 3]\), но \([3, 1]\) не является.

Назовем подотрезком массива \(a\) непустой массив \(b\) такой, что он может быть получен путем удаления нескольких (возможно, никаких) первых и последних элементов массива \(a\). Например, \([1, 2]\) является подотрезком массива \([1, 2, 3]\), а \([1, 3]\) не является. Несложно заметить, что у массива длины \(n\) ровно \(\frac{n(n + 1)}{2}\) подотрезков.

Назовем массив \(a\) длины \(n\) возрастающим , если для любого \(1 \leq i < n\) выполняется \(a_i < a_{i + 1}\).

Монотонностью массива назовем количество его возрастающих подотрезков.

Дан массив \(a\) длины \(n\). Посчитайте сумму монотонностей по всем его подпоследовательностям. Так как ответ может быть очень большим, выведите его по модулю \(10^9 + 7\).

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

В первой строке задано целое число \(n\) (\(1 \leq n \leq 200\,000\)) — длина массива \(a\).

Во второй строке заданы \(n\) целых чисел (\(1 \leq a_i \leq 200\,000\)) — элементы массива \(a\).

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

Выведите одно целое число — сумму монотонностей всех подпоследовательностей по модулю \(10^9 + 7\).

Примечание

В первом тестовом примере у массива есть \(7\) подпоследовательностей:

  • У массива \([1]\) есть ровно один подотрезок и он является возрастающим.
  • У массива \([2]\) есть ровно один подотрезок и он является возрастающим.
  • У массива \([3]\) есть ровно один подотрезок и он является возрастающим.
  • У массива \([1, 2]\) есть три подотрезка (\([1], [2], [1, 2]\)) и все они являются возрастающими.
  • У массива \([1, 3]\) есть три подотрезка (\([1], [3], [1, 3]\)) и все они являются возрастающими.
  • У массива \([3, 2]\) есть три подотрезка (\([3], [2], [3, 2]\)), но только два из них (\([3]\) и \([2]\)) являются возрастающими.
  • У массива \([1, 3, 2]\) есть шесть подотрезков (\([1], [3], [2], [1, 3], [3, 2], [1, 3, 2]\)) и четыре из них (\([1], [3], [2], [1, 3]\)) являются возрастающими.

Во втором тестовом примере все возрастающие подотрезки всех подпоследовательностей имеют длину \(1\).

Примеры
Входные данные
3
1 3 2
Выходные данные
15
Входные данные
3
6 6 6
Выходные данные
12
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
256 megabytes

Мы создали бесконечный кроссворд, взяв прямоугольник размера \(\)\(N \times M\)\(\), заполненный буквами и замостили им бесконечную плоскость. Например, прямоугольник

honi

hsin

порождает следующий крссворд:
...honihonihonihoni...

...hsinhsinhsinhsin...

...honihonihonihoni...

...hsinhsinhsinhsin...

, который бесконечно продолжается во всех направлениях.

В данном кроссворде нами случайно (равновероятно) выбирается одна клетка и одно из восьми направлений. Затем начиная с данной клетки в данном направлении выписывается слово длины \(\)\(K\)\(\). Описанный процесс повторяется (независимо от первого раза) второй раз. Вам требуется вычислить вероятность того, что два выписанных слова совпадут.

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

Первая строка содержит три числа \(\)\(M, N, K\)\(\) (\(\)\(1 \leq N, M \leq 500\)\(\), \(\)\(1 \leq K \leq 10^9\)\(\)) — размеры блока и длина выбираемого слова соответственно.

Следующие \(\)\(M\)\(\) строк содержат по \(\)\(N\)\(\) латинских строчных букв, задавая блок, коим замощается доска. Гарантируется, что в данных есть хотя бы две различные буквы.

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

Выведите требуемую вероятность в виде сокращённой дроби «p/q» без пробелов и кавычек.

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

Решение, правильно работающее на тестах, в которых \(\)\(N = M\)\(\) будет оцениваться в \(\)\(62\)\(\) балла.

Примеры
Входные данные
1 2 2
ab
Выходные данные
5/16
Входные данные
2 4 3
honi
hsin
Выходные данные
19/512
Входные данные
3 3 10
ban
ana
nab
Выходные данные
2/27

Страница: << 50 51 52 53 54 55 56 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест