Теория вероятностей(3 задач)
Конструктив(21 задач)
Формула(17 задач)
Комбинаторика(9 задач)
Вася не только играет в компьютерные и настольные игры, но и решает олимпиадные задачи по программированию. Три года назад он зарегистрировался на одном очень популярном сайте—KodeForces (KF) и с тех пор уже сдал целых 11 задач из архива! Вася не намерен останавливаться на достигнутом и планирует решить еще 1-2 задачи в ближайший месяц - полтора.
Однако сейчас его мозг занят совсем другой проблемой. Раз в год на KF случается чудо — любой пользователь сайта может изменить свой логин (имя пользователя). «Такую возможность упускать нельзя!», — подумал Вася и решил сделать свой логин лаконичным , т.е. состоящим из одинаковых букв.
Однако в этом году все не так то просто... Изменять логин можно только согласно следующему правилу: можно выбрать все одинаковые буквы имени и заменить их все на предыдущую или последующую букву в алфавитном порядке. Например, можно заменить все e на d или f . При этом, z можно заменить на a или y , а a на z или b .
Вася несколько ленив, поэтому, прежде чем начать изменение имени, он хочет посчитать минимальное количество применений описанного выше правила, позволяющее сделать логин лаконичным. Что если это число окажется слишком большим, и он потратит слишком много времени и пропустит очередной рейд в WoW-ке?
В первой и единственной строке находится исходный логин Васи—строка из маленьких латинских букв длиной не более 1000 символов.
Выведите единственное число—минимальное количество действий, за которое можно сделать логин Васи лаконичным.
В первом примере Вася может сначала заменить все буквы a на b , а затем буквы b на c . Т.е.aaac => bbbc => cccc.
Во втором примере Васе необходимо заменить все a на b , а затем изменить букву c на b . Т.е. bbaaaac => bbbbbbc => bbbbbbb.
aaac
2
bbaaaac
2
Мирко большой любитель шахмат и программирования, но обычные шахматы уже наскучили ему, поэтому он начал экспериментировать и придумал свою игру. Он взял шахматную доску с N рядами и N столбцами и расположил на ней K ладей. Игра Мирко следует таким правилам: 1. У каждой ладьи есть своя сила, заданная натуральным числом. 2. Ладья видит все клетки поля в своем ряду и своем столбце кроме той, на которой стоит сама. 3. Клетка считается атакованной в том случае, если побитовый XOR сил всех ладей, которые видят эту клетку, положителен. Изначально Мирко некоторым образом расположил ладьи на поле, и теперь собирается сделать P перемещений. Каждый раз он будет брать одну ладью и ставить ее на другую клетку поля (при этом ладья не обязательно будет перемещена вдоль ряда или столбца в котором она стоит). После каждого перемещения, определите сколько клеток на поле атакованы.
Первая строка содержит 3 целых числа N , K , P ( 1 ≤ N ≤ 1000000000 , 1 ≤ K , P ≤ 10000 ). Каждая из следующих K строк содержит 3 натуральных числа R i , C i , X i ( 1 ≤ R i , C i ≤ N , 1 ≤ X i ≤ 1000000000 ), которые обозначают что на клетке ( R i , C i ) стоит ладья с силой X i . Каждая из следующих P строк содержит 4 натуральных числа R 1 , C 1 , R 2 , C 2 ( 1 ≤ R 1, C 1, R 2, C 2 ≤ N ), которые означают что ладья, стоящая на клетке ( R 1, C 1 ), была передвинута на поле ( R 2, C 2 ). Гарантируется, что в момент перемещения на клетке ( R 1, C 1 ) есть ладья и что ни в какой момент времени на одной клетке нет двух и более ладей.
Выведите P строк, где в k -й строке записано единственное число - количество клеток поля, атакованных после первых k перемещений.
2 2 2 1 1 1 2 2 1 2 2 2 1 1 1 1 2
4 0
2 2 2 1 1 1 2 2 2 2 2 2 1 1 1 1 2
4 2
3 3 4 1 1 1 2 2 2 2 3 3 2 3 3 3 3 3 3 1 1 1 1 2 3 1 3 2
6 7 7 9
Банк страны Олимпия пригласил Петрика проверить новую систему безопасности. Его задача как можно скорее открыть сейф, разгадав такой шифр. Вокруг центрального круга сейфа записано p натуральных чисел. Для того, чтобы открыть сейф, необходимо заменить все числа на другие натуральные таким образом, что каждое число в сумме с q - 1 следующим числами давало бы первоначальное число. Например, если вокруг круга сейфа указано числа 11, 12, 11, 9, 9, 9, 9, и q = 5 , то нужно установить числа 1, 2, 3, 2, 3, 2, 1 и сейф будет открыт!
Напишите программу, которая по начальной конфигурации сейфа и числом q, восстановит одну из возможных конфигураций, откроют сейф.
В первой строке входного файла находится два натуральных числа p и q соответственно (1 ≤ q ≤ p ≤ \(10^4\)) . p и q - простые числа. В следующей строке задано p натуральных чисел, не превышающих \(10^9\) - исходная конфигурация сейфа.
В единственной строке выведите p натуральных чисел, не превышают \(10^9\) , которые откроют сейф. Гарантируется, что по крайней мере одна такая конфигурация существует. Если возможных ответов несколько, выведите любой из них.
Дополнительно гарантируются следующие условия:
1. 30% тестов: p ≤ 7 , существует ответ, в котором все искомые числа ≤ 7
2. 60% тестов: p ≤ 500 , существует ответ, в котором все искомые числа ≤ 500
3 2 7 6 9
5 2 4
Петрик обожает конструкторы. В этот раз он захотел поиграть с набором прямоугольных брусков. Этот набор состоит из n брусков, причем содержит ровно по одному бруску каждого из размеров 1 * 1, 1 * 2, ..., 1 * n. Петрик хочет выбрать некоторые бруски из набора и построить из них пирамидку. Пирамидка состоит из одного или более уровней высотой в один кубик, в каждом уровне бруски расположены горизонтально вплотную друг к другу меньшей стороной, а самый левый брусок в уровне расположен вплотную к стене, и каждый следующий уровень не более длиной, чем предыдущий (считая снизу вверх). При этом Петрик считает, что пирамидка будет более устойчивой, если каждый брусок в каждом уровне, кроме низкого, будет лежать не менее чем на двух брусках с предыдущего уровня. Например, такая конструкция не является пирамидкой, потому что брусок 1 * 2 лежит только на одном бруске: Найдите пирамидку с наибольшим количеством уровней, которую можно построить из некоторых брусков из данного набора с n брусков. Если таких пирамидок несколько, то выведите любую.
Одно целое число n ( 1 ≤ n ≤ 10 5 )
В первой строке целое число M - количество уровней в пирамидке с наибольшим возможным количеством уровней. Далее М строк, описывающих уровень снизу вверх, каждая из этих строк начинается с числа - количества брусков в соответствующем уровне, далее чисел - длины брусков в соответствующем уровне в порядке слева направо.
5
2 4 1 3 4 5 1 2
Учитель отправил своим ученикам письмо со следующим заданием: "Напишите программу, которая определит значение X по следующему выражению: X = number 1 pot 1 + number 2 pot 2 + ... + number n pot n если известно, что number 1 , number 2 , ... , number n - натуральные числа, а pot 1 , pot 2 , ... , pot n - однозначные натуральные числа."
К сожалению, из-за того что учитель был очень глупый, при записи формулы на компьютер, форматирование текста было потеряно и формула для значения X превратилось в сумму N чисел: X = P 1 + P 2 + ... + P n . Например, без форматирования изначальная формула X = 21 2 + 123 5 превратилась в формулу X = 212 + 1235 . Помогите глупому учителю написать программу, которая по новой формуле (то есть по данным числам P 1 , P 2 , ... , P n ) восстановит изначальное значение X .
Первая строка содержит одно целое число N ( 1 ≤ N ≤ 10 ), количество чисел в формуле. Каждая из следующих N строк содержит одно целое число P i ( 10 ≤ P i ≤ 9999 ) - соответствующий элемент формулы.
Выведите единственное целое число - изначальное значение X .
2 212 1253
1953566
5 23 17 43 52 22
102
3 213 102 45
10385