Задачи в этом листке очень разнообразные, возможно, задачи, которые вам покажутся простыми, будут не первыми.
Теорема Лагранжа заключается в том что каждое целое неотрицательное число может быть представлено в виде суммы четырёх квадратов целых чисел. Научитесь строить такое представление.
Первая строка входных данных содержит целое положительное число
Для каждого из данных
Возможно, вам придётся напрячься, чтобы решение прошло по TL. Рекомендация: используйте массив, как самую быструю структуру данных. При переборе сумм берите следующее слагаемое не меньше предыдущего (чтобы считать пары слагаемых один раз).
Ввод | Вывод |
---|---|
10 1 2 3 4 5 6 7 8 9 179 |
0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 2 0 0 1 2 0 1 1 2 1 1 1 2 0 0 2 2 0 0 0 3 0 1 3 13 |
У вас есть несколько камней известного веса
Программа получает на вход количество камней
Выведите одно целое неотрицательное число — минимальную разность весов двух куч.
Ввод | Вывод |
---|---|
5 46 25 62 11 45 |
7 |
У вас есть несколько камней известного веса
Программа получает на вход количество камней
Выведите одно целое неотрицательное число — количество искомых подмножеств.
Ввод | Вывод |
---|---|
10 20 1 2 3 4 5 6 7 8 9 10 |
31 |
Робот начинает движение в точке (
Для каждого
Первая строка входных данных содержит число
Выведите
Ввод | Вывод |
---|---|
7 5 10 -2 0 3 0 4 0 5 0 0 10 0 -10 0 10 |
0 2 0 3 0 1 0 |
Пусть дано простое число
В отличие от вычисления логарифмов действительных чисел, дискретное логарифмирование — сложная алгоритмическая задача, поэтому возведение в степень в кольце вычетов часто используется в криптографии, как односторонняя функция.
Наивный алгоритм решения заключается в последовательном вычислении
Используя идею Meet-in-the-middle можно реализовать алгоритм сложности
Возьмём
Тогда
Здесь
Вычислим все значения
Программа получает на вход числа
Программа должна вывести такое минимальное целое положительное
Ввод | Вывод |
---|---|
17 12 3 |
5 |
3 2 2 |
1 |
7 2 3 |
-1 |
Эта задача не на meet-in-the-middle, а на динамическое программирование. Она пригодится для решения задачи о клике.
Вам дан граф из
Первая строка входных данных содержит количество вершин в графе
Программа должна вывести
После кода подмножества через пробел выведите размер максимальной подклики в данном подмножестве. Строки должны идти в лексикографическом порядке кодов подмножества.
Указание. Будем использовать динамическое программирование. Пусть
Научимся пересчитывать
У нас есть два варианта построить максимальную подклику в
Если
Если
Теперь выберем наибольшее:
Ввод | Вывод |
---|---|
4 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 |
0000 0 0001 1 0010 1 0011 2 0100 1 0101 1 0110 2 0111 2 1000 1 1001 1 1010 2 1011 2 1100 2 1101 2 1110 3 1111 3 |
Решите задачу, аналогичную предыдущей, только для каждого подмножества вершин
Для этого модифицируйте формулу для динамического программирования из предыдущей задачир так, чтобы считать количество подграфов–клик.
Формат ввода и вывода аналогичен предыдущей задаче.
Ввод | Вывод |
---|---|
4 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 |
0000 1 0001 2 0010 2 0011 4 0100 2 0101 3 0110 4 0111 6 1000 2 1001 3 1010 4 1011 6 1100 4 1101 5 1110 8 1111 10 |
В данном графе из
Воспользуемся методом Meet-in-the-middle. Разобьём множество вершин графа
на две части
Будем перебирать подмножества
Давайте посчитаем количество способов добавить к множеству
Построим множество
Сложность решения будет
Формат входных данных совпадает с предыдущей задачей, только
Программа должна вывести единственное число — количество клик в данном графе.
Ввод | Вывод |
---|---|
5 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 |
14 |
В данном графе из
Воспользуемся методом Meet-in-the-middle. Разобьём множество вершин графа
на две части
Теперь будем искать наибольшую клику
Будем перебирать
Сложность решения будет
Формат входных данных совпадает с предыдущей задачей,
Программа должна вывести номера вершин, входящих в максимальную клику.
Ввод | Вывод |
---|---|
5 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 |
3 4 5 |
Даны две строки. Определите, можно ли получить одну из другой используя четыре операции вида «взять подстроку в строке и развернуть её в обратном порядке».
Программа получает на вход две строки, состоящие из строчных английских букв.
Длины строк равны
Если вторую строку можно получить из первой при помощи четырёх операций разворота подстроки,
то выведите эти четыре операции в виде четырёх строк.
Если получить вторую строку из первой при помощи четырёх таких операций нельзя, выведите одно число «
Ввод | Вывод |
---|---|
abacaba aaaabbc |
2 3 3 7 6 7 4 5 |
ababababab bbbbbaaaaa |
-1 |
В игре «Пятнашки»
необходимо упорядочить 15 фишек, перемещая их внутри квадрата
В пятнашках возможно построить кратчайшее решение для любой позиции (для которой это решение существует) используя возможности обычного компьютера, но решение будет довольно долго работать и ему понадобится несколько гигабайт памяти. Поэтому вам нужно научиться решать упрощённую версию головоломки, в которой поле состоит из 3 строк и 4 столбцов и 11 фишек с числами от 1 до 11. Вам необходимо переместить фишки так, чтобы в верхнем ряду были числа 1, 2, 3, 4, во втором ряду — 5, 6, 7, 8, в третьем ряду 9, 10, 11, пустой была бы клетка в правом нижнем углу.
Программа получает на вход 12 чисел — по 4 числа в 3 строках. Числа имеют значения от 0 до 12, значение 0 обозначает пустую клетку. Гарантируется, что все числа от 0 до 11 встречаются ровно 1 раз и что головоломка с таким размещением фишек имеет решение.
Программа должна вывести в первой строке число
Ограничения по времени (30 секунд) и памяти (2 GiB) установлены экcпериментально, они в два раза превышают
ограничения авторского решения. Но если использовать больше 1 GiB памяти есть шанс активного использования
своп-памяти, что приведёт к превышению ограничения астрономического времени. Возможно, вам придётся экономить и память программы.
Вероятно, вам понадобится множество экспериментов со своим приложением. В системе Linux вы можете определить время работы
программы и размер использованной памяти при помощи команды time
.
Одну игровую позицию рекомендуется хранить в 64-битной целочисленной переменной.
Ввод | Вывод |
---|---|
1 2 7 3 5 6 11 4 9 10 8 0 |
6 RDDLUU |