---> 28 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 1 2 3 4 5 6 >> Отображать по:
ограничение по времени на тест
3.0 second;
ограничение по памяти на тест
256 megabytes

На уроке информатики Валерий изучал сжатие данных. Учитель рассказал новый метод, который мы сейчас вам опишем.

Пусть {a1, a2, ..., an} — данная последовательность строк, которую необходимо сжать. Здесь и далее будем считать, что все строки имеют одинаковую длину и состоят только из символов 0 и 1. Определим функцию сжатия:

  • f(пустая последовательность) = пустая строка
  • f(s) = s.
  • f(s1, s2) = наименьшая по длине строка, у которой один из префиксов равен s1, а один из суффиксов равен s2. Например, f(001, 011) = 0011, f(111, 011) = 111011.
  • f(a1, a2, ..., an) = f(f(a1, a2, an - 1), an). Например, f(000, 000, 111) = f(f(000, 000), 111) = f(000, 111) = 000111.

Перед Валерой стоит серьезная задача — разделить данную последовательность {a1, a2, ..., an} на две подпоследовательности {b1, b2, ..., bk} и {c1, c2, ..., cm}, m + k = n, так, чтобы величина S = |f(b1, b2, ..., bk)| + |f(c1, c2, ..., cm)| приняла минимально возможное значение. Здесь |p| обозначает длину строки p.

Обратите внимание, что запрещается менять относительный порядок строк в подпоследовательностях. Разрешается делать одну из подпоследовательностей пустой. Каждый элемент исходной последовательности должен принадлежать ровно одной из получившихся подпоследовательностей. Элементы подпоследовательностей b и c не обязательно должны идти подряд в исходной последовательности a, то есть они могут чередоваться (смотрите примеры 2 и 3).

Помогите Валере найти минимальное возможное значение S.

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

В первой строке входных данных содержится целое число n — количество строк (1 ≤ n ≤ 2·105). Далее в n строках даны элементы последовательности — строки длиной от 1 до 20 символов, состоящие только из символов 0 и 1. На i + 1 строке входных данных находится i-ый член последовательности. Элементы последовательности разделены исключительно символом перевода строки. Гарантируется, что все строки имеют одинаковую длину.

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

Выведите единственное число — минимально возможное значение S.

Примеры тестов
Входные данные
3
01
10
01
Выходные данные
4
Входные данные
4
000
111
110
001
Выходные данные
8
Входные данные
5
10101
01010
11111
01000
10010
Выходные данные
17
Примечание

Подробные ответы к тестам:

  • Оптимальный вариант: сделать одну из подпоследовательностей пустой, а вторую — равной всей данной последовательности. S = |f(01, 10, 01)| = |f(f(01, 10), 01)| = |f(010, 01)| = |0101| = 4.
  • Оптимальный вариант: b = {000, 001}, c = {111, 110}. S = |f(000, 001)| + |f(111, 110)| = |0001| + |1110| = 8.
  • Оптимальный вариант: b = {10101, 01010, 01000}, c = {11111, 10010}. S = |10101000| + |111110010| = 17.

Подзадача 1. N ≤ 10. Решение оценивается в 30 баллов.

Подзадача 2. N ≤ 1 000. Решение оценивается в 30 баллов.

Подзадача 3. Дополнительные ограничения отсутствуют. Решение оценивается в 40 баллов.

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

Необходимо определить делится ли данное число на 15.

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

Натуральное число вводится своим двоичным представлением (длина числа не превышает 10000 двоичных разрядов).

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

Выведите «YES», если делится, и «NO», если нет.

Примеры тестов

Входные данные
11110
Выходные данные
YES
Входные данные
110
Выходные данные
NO

Дано число в K-ичной системе счисления. Найти остаток от деления его на m.

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

В первой строке даты три натуральных числа K, n, m в десятичной системе счисления (2 ≤ K ≤ 36, 1 ≤ n ≤ 104, 2 ≤ m ≤ 109). В следующей строке дано число в K-ичной системе счисления, длина которого равна n. Число состоит либо из цифр, либо из заглавных букв латинского алфавита.

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

Выведите остаток от деления данного числа на m (в десятичной системе счисления).

Примеры тестов

Входные данные
2 5 11
11110
Выходные данные
8
Входные данные
36 2 17
AZ
Выходные данные
4

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

Дано целое число x (0 ≤ x ≤ 4·1018).

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

Вывести количество единиц в двоичной записи числа x.

Примеры тестов

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

Точки с целочисленными координатами из 1-го квадранта помечаются числами 0,1,2,... слева направо и снизу вверх таким образом, что очередной точке приписывается минимальное число, отсутствующее в вертикали и горизонтали, проходящей через точку. Первой помечается точка (0,0).

То есть допустим мы хотим пометить точку (i, j). Это значит, что все точки, находящиеся ниже и левее относительно нее уже помечены. Тогда рассмотрим набор из чисел в i-ом столбце и j-ом столбце (вместе). Отметкой точки (i, j) будет минимальное неотрицательное число, которое не содержится в этом наборе.

Написать программу, которая

  1. По заданным координатам x и y, x ≥ 0, y ≥ 0, x, y — целые, определяет пометку точки.
  2. По заданной координате x и пометке точки c, x ≥ 0, y ≥ 0, x, y — целые, определяет вторую координату точки.

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

В первой строке даются два числа x и y для первой части задачи (0 ≤ x, y ≤ 109). Во второй строке даются два числа x и c для второй части задачи (0 ≤ x ≤ 109, 0 ≤ c ≤ 2·109)

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

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

Примеры тестов

Входные данные
3 4
5 23
Выходные данные
7
18


Страница: << 1 2 3 4 5 6 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест