Динамическое программирование на таблицах(46 задач)
Динамическое программирование по подстрокам(21 задач)
Задача о рюкзаке(34 задач)
Числовая последовательность задана рекуррентной формулой: \(a_{i+1}\)=(\(k\) \(a_i\)+\(b\))mod \(m\). Найдите длину её наибольшей возрастающей подпоследовательности.
Программа получает на вход пять целых чисел: длину последовательности \(n\) (1≤\(n\)≤\(10^5\)), начальный элемент последовательности \(a_1\), параметры \(k\), \(b\), \(m\) для вычисления последующих членов последовательности (1≤\(m\)≤\(10^4\), 0≤\(k\)<\(m\), 0≤\(b\)<\(m\), 0≤\(a_1\)<\(m\)).
Требуется вывести длину наибольшей возрастающей подпоследовательности данной последовательности.
5 41 2 1 100
3
Числовая последовательность задана рекуррентной формулой: \(a_{i+1}\)=(\(k*a_i\)+\(b\))mod \(m\). Найдите её наибольшую возрастающую подпоследовательность.
Программа получает на вход пять целых чисел: длину последовательности \(n\) (1≤\(n\)≤\(10^5\)), начальный элемент последовательности \(a_1\), параметры \(k\), \(b\), \(m\) для вычисления последующих членов последовательности (1≤\(m\)≤\(10^4\), 0≤\(k\)<\(m\), 0≤\(b\)<\(m\), 0≤\(a_1\)<\(m\)).
Требуется вывести наибольшую возрастающую подпоследовательность данной последовательности, разделяя числа пробелами. Если таких последовательностей несколько, необходимо вывести одну (любую) из них.
5 41 2 1 100
41 67 71
Иван-царевич в глубокой печали: морской царь поручил ему перепахать до утра огромную пустошь на морском дне и засеять рожью. Понятно, что без волшебства тут не справиться! По счастью, дочь морского царя, Василиса Премудрая, предложила Ивану-царевичу свою помощь.
У Василисы в сундуке хранятся грамоты с древними заклинаниями. Она втайне была в учении у самой Бабы-Яги, поэтому знает, что, чтобы творить волшебство, нужно произнести заклинание, да такое, в котором скрыто содержится нужное волшебное слово. Но достаточно ли сильны заклинания, хранящиеся в сундуке?
Вот что Василиса Премудрая узнала от Бабы-Яги:
Вхождение слова в заклинание — это подпоследовательность букв заклинания, совпадающая со словом. Буквы слова могут идти не подряд, но должны быть расположены в том же порядке. К примеру, заклинания «cadabra» и «barabara» содержат слово «abra», а заклинание «raba» — не содержит.
Вхождение называют скрытым, если никакие две его буквы не идут подряд. Например, в заклинание «abuba» слово «aua» входит скрыто, так как буквы вхождения (первая, третья и пятая) идут не подряд, а через одну. В заклинание «bauab» слово «aua», напротив, входит не скрыто.
Силой заклинания относительно волшебного слова считается количество скрытых вхождений в него этого волшебного слова. Например, волшебное слово «az» в заклинание «abazaba» входит два раза, но только один раз — скрыто, поэтому сила его равна единице.
Василиса хочет посчитать силу заклинания, которое она достала из сундука. Да вот беда — заклинание длинное, вхождений много, а ещё нужно отличать скрытые вхождения от не скрытых...
Зная заклинание и волшебное слово, посчитайте силу этого заклинания относительно данного волшебного слова.
В первой строке входного файла задано заклинание. Во второй строке задано волшебное слово. Обе строки не пусты, состоят из маленьких букв латинского алфавита, а длина каждой из них не превосходит 45 символов.
В первой строке выходного файла выведите одно число — силу заклинания относительно данного волшебного слова.
В первом примере волшебное слово «az» входит в заклинание скрыто всего один раз: «a» соответствует первой букве заклинания, а «z» — четвёртой. Другое вхождение волшебного слова, в котором «a» соответствует третьей букве, а «z» — четвёртой, не является скрытым, так как соседние буквы волшебного слова расположены в заклинании рядом.
Во втором примере две буквы «i» могут поместиться, только если они соответствуют четвёртой и шестой буквам заклинания; буква «e», которая должна стоять перед ними, может соответствовать первой или второй букве заклинания.
abazaba az
1
eeeiiieee eii
2
Дана строка, составленная из круглых, квадратных и фигурных скобок. Определите, какое наименьшее количество символов необходимо удалить из этой строки, чтобы оставшиеся символы образовывали правильную скобочную последовательность.
Строка из круглых, квадратных и фигурных скобок. Длина строки не превосходит 100 символов.
Выведите строку максимальной длины, являющуюся правильной скобочной последовательностью, которую можно получить из исходной строки удалением некоторых символов.Если возможных ответов несколько, выведите любой из них.
([)]
[]
{([(]{)})]
[({})]
Вам нужно распилить деревянный брус на несколько кусков в заданных местах. Распилочная компания берет \(k\) рублей за распил одного бруска длиной \(k\) метров на две части.
Понятно, что различные способы распила приводят к различной суммарной стоимости заказа. Например, рассмотрим брус длиной 10 метров, который нужно распилить на расстоянии 2, 4 и 7 м, считая от одного конца. Это можно сделать несколькими способами. Можно распилить сначала на отметке 2 м, потом 4 и, наконец, 7 м. Это приведет к стоимости 10+8+6=24, потому что сначала длина бруса, который пилили, была 10 м, затем она стала 8 м, и, наконец, 6 м. А можно распилить иначе: сначала на отметке 4 м, затем 2, затем 7м. Это приведет к стоимости 10+4+6=20, что лучше.
Определите минимальную стоимость распила бруса на заданные части.
Первая строка входных данных содержит целое число \(L\) (2≤\(L\)≤\(10^6\)) - длину бруса и целое число \(N\) (1≤\(N\)≤100) - количество распилов. Во второй строке записано \(N\) целых чисел \(С_i\) (0<\(C_i\)<\(L\)) в строго возрастающем порядке - места, в которых нужно сделать распилы.
Выведите одно натуральное число - минимальную стоимость распила.
10 3 2 4 7
20