Динамическое программирование на таблицах(46 задач)
Динамическое программирование по подстрокам(21 задач)
Задача о рюкзаке(34 задач)
Знаменитый художник Вася только что закончил работу над своим новым шедевром и хочет знать, сколько он сможет получить за свой труд.
Картина представляет собой прямоугольник N на M сантиметров, разделенный на маленькие квадратики 1 на 1 сантиметр со сторонами, параллельными сторонам картины. Для достижения гармонии каждый из этих квадратиков Вася покрасил одним из 26 особых цветов, обозначаемых маленькими латинскими буквами.
Стоимость картины в точности равна количеству «симпатичных» частей в ней. Частью картины называется любой прямоугольник, который может быть вырезан из нее по границам квадратиков. Часть называется «симпатичной», если при выполнении симметрии относительно ее центра получается прямоугольник, раскрашенный также, как и исходная часть. Например, в картине, раскрашенной так:
abc
acb
симпатичными являются все части, состоящие из одного квадратика (их 6), а также части
bc и a
cb и a
Напишите программу, которая по информации о шедевре Васи определит его стоимость.
В первой строке содержатся два числа N и M (1 ≤ N, M ≤ 100). В следующих N строках идут строки, состоящие из M маленьких латинских символов. Символ в i-й строке j-м столбце определяет цвет соответствующего квадратика картины.
Выведите стоимость шедевра — количество частей, симметричных относительно своего центра.
Комментарии к примерам тестов
Этот пример разобран в условии
Симпатичными являются шесть частей 1x1, одна часть 1x2 и сама картина.
Частичные ограничения
Первая группа состоит из тестов, в которых N, M ≤ 15. Данная группа оценивается в 30 баллов.
Вторая группа состоит из тестов, в которых N, M ≤ 50. Данная группа оценивается в 30 баллов.
2 3 abc acb
8
3 2 ab cc ba
8
Вы решили заказать пиццу с доставкой на дом. Известно, что для клиентов, сделавших заказ на сумму более \(C\) рублей, доставка является бесплатной, при заказе на \(C\) рублей и меньше доставка стоит B рублей.
Вы уже выбрали товар, стоимостью \(A\) рублей. В наличии имеются еще \(N\) товаров стоимостью \(d_1\), ..., \(d_N\) рублей, каждый в единственном экземпляре. Их также можно включить в заказ.
Как потратить меньше всего денег и получить на дом уже выбранный товар в \(A\) рублей?
Сначала вводятся числа \(A\), \(B\), \(C\), \(N\), а затем \(N\) чисел \(d_1\), ..., \(d_N\).
Все числа целые, 1 ≤ \(A\) ≤ 1000, 1 ≤ \(B\) ≤ 1000, 1 ≤ \(C\) ≤ 1000, 0 ≤ \(N\) ≤ 1000, 1 ≤ \(d_i\) ≤ 1 000 000.
Выведите сначала суммарное количество денег, которое придется потратить. Если при этом вы планируете сделать дополнительный заказ c расчетом на бесплатную доставку, то далее выведите количество этих товаров и их номера в возрастающем порядке. Если же Вы будете оплачивать доставку сами, то далее выведите одно число –1 (минус один).
10 17 25 5 2 7 5 3 7
26 3 1 2 5
Вы решили заказать пиццу с доставкой на дом. Известно, что для клиентов, сделавших заказ на сумму более \(C\) рублей, доставка является бесплатной, при заказе на \(C\) рублей и меньше доставка стоит \(B\) рублей. Вы уже выбрали товара стоимостью \(A\) рублей. В наличии имеются еще \(N\) товаров стоимостью \(d_1, ..., d_N\) рублей, каждый в единственном экземпляре. Их также можно включить в заказ. Как потратить меньше всего денег и получить на дом уже выбранный товар стоимостью \(A\) рублей?
Вводятся сначала числа \(A, B, C, N,\) а затем \(N\) чисел \(d_1, ..., d_N\). Все числа целые, \(1 \le A \le 1000, 1 \le B ≤ 1000, 1 \le C \le 1000, 0 \le N \le 1000, 1 \le di \le 1 000 000\).
Выведите единственное число – суммарное количество денег, которое придется потратить.
10 17 25 5 2 7 5 3 7
26
100 1 50 5 5 2 4 3 1
100
10 14 25 5 2 7 5 3 7
24
В Вес-Лагасе построили новый отель. В отеле бесконечное количество номеров (отелей с конечным количеством номеров для гостей Вес-Лагаса не хватает).
Гости Вес-Лагаса очень суеверные: они испытывают страх перед числом 13 и ненавидят номера, в десятичной записи которых присутствует это число. Поэтому в отеле нет комнат, которые содержат 13 в записи своего номера. Например, в отеле нет комнат с номерами 13, 132, 913, 1308, 1313. Требуется определить, какой номер имеет N-я по счету комната.
Входной файл содержит несколько тестовых блоков. Первая строка содержит число T (1 ≤ T ≤ 100) – количество тестовых блоков.
Каждая из следующих T строк описывает один тестовый блок и содержит единственное число N (\(1 \leq N \leq 10^{18}\)).
Выведите ответ для каждого тестового блока в отдельной строке.
3 20 150 1
21 162 1
Во входном файле записаны две последовательности. Каждая последовательность описывается двумя строками следующим образом: в первой строке идет длина последовательности \(M\) (1 \(\le\) \(M\) \(\le\) 500), во второй идут \(M\) целых чисел \(a_i\) (\(−2^{31}\) \(\le\) \(a_i\) < \(2^{31}\)) – члены последовательности. Нужно найти возрастающую последовательность наибольшей длины, являющейся подпоследовательностью обоих данных последовательностей.
В первой строке выходного файла выведите \(N\) - длину наибольшей общей возрастающей подпоследовательности.
Во второй строке выходного файла выведите саму подпоследовательность.
5 1 4 2 5 -12 4 -12 1 2 4
2 1 2