Динамическое программирование

363 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.
Фермер Джон занялся редактированием геномов. Как известно, геном может быть представлен строкой состоящей из символов 'A', 'C', 'G', 'T'. Максимальная длина строки генома, рассматриваемая ФД есть 10^5.

ФД начинает с одного генома и редактирует его, выполняя следующие шаги:

  1. Разделяет геном между каждыми двумя последовательными равными символами.
  2. Реверсирует каждую из полученных подстрок.
  3. Конкатенирует реверсированные подстроки в том же порядке.

Например, если ФД начинает с генома AGGCTTT, то он выполнит следующие шаги:

  1. Разделит между последовательными равными символами G и T получит AG | GCT | T | T.
  2. Реверсирует каждую подстроку, получит GA | TCG | T | T.
  3. Конкатенирует реверсированные подстроки, получит GATCGTT.

К несчастью, после редактирования генома компьютер ФД сломался, и ФД потерял последовательность генома, с которого он начинал. Более того, некоторые части отредактированного генома повредились, заменившись на знак '?'.

По заданной последовательности отредактированного генома помогите ФД определить количество возможностей для стартового генома по модулю \(10^9+7\).

ФОРМАТ ВВОДА: (с клавиатуры / stdin):

Непустая строка символов , где каждый символ один из A, G, C, T, ?.

ФОРМАТ ВЫВОДА: (на экран / stdout):

Количество возможных оригинальных геномов по модулю \(10^9+7\).

Бовинополис состоит из ряда из \(N\) пастбищ (\(1 \leq N \leq 3 \cdot 10^5\)), Каждое из которых содержит одну корову типа Holstein или Guernsey.

Правительство Бовинополиса хочет разделить его на некоторое количество непрерывных районов так, чтобы каждый район содержал не более \(K\) пастбищ (\(1 \leq K \leq N\)), и каждое пастбище содержится ровно в одном районе. Поскольку сейчас правительство контролируется Holstein-ами, они хотят найти такой способ разделения на районы, который минимизирует количество районов, в которых коров Guernsey будет больше, чем коров Holstein или столько же сколько Holstein.

Оппозиционная коалиция Guernsey старается выяснить вред от такого переадминистрирования. Помогите им вычислить минимальное количество районов, в которых у Guernsey будет большинство или равенство.

ФОРМАТ ВВОДА (файл redistricting.in):

Первая строка ввода содержит два разделённых пробелом целых числа \(N\) и \(K\). Вторая строка содержит строку символов длиной \(N\). Каждый символ 'H' или 'G', означающих Holstein или Guernsey, соответственно.

ФОРМАТ ВЫВОДА (файл redistricting.out):

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

Однажды утром Фермер Джон проснулся от звуков дробления древесины. Это коровы ломали амбар.

ФД рассердился. Он приделал к стене счётчик дней с последнего слома. Если слом случился утром, счётчик покажет 0. Если последний слом случился 3 дня назад, счётчик показывает 3. ФД тщательно записывал значение счётчика каждый день.

В конце года ФД решил действовать. Однако с логом некоторые проблемы.

ФД хочет определить, сколько слово зафиксировано. Однако он подозревает, что коровы подделали его лог и всё в чём он уверен, что он начало лог в день слома. Помогите ему определить, для каждого количества сломов какое минимальное количество записей должно быть подделано.

ФОРМАТ ВВОДА (файл taming.in):

Первая строка ввода содержит одно целое число \(N\) (\(1 \leq N \leq 100\)), обозначающее количество дней, с дня когда ФД начал логгирование.

Вторая строка содержит \(N\) целых чисел, разделённых одиночными пробелами. \(i\)-ое число это неотрицательное целое \(a_i\) (не более 100), указывающее что в день \(i\) на счётчике было \(a_i\) если коровы не подделали эту запись в логе.

ФОРМАТ ВЫВОДА (файл taming.out):

Вывод состоит из \(N\) целых чисел, по одному в строке. \(i\)-ое целое число должно содержать минимум из всех возможных последовательностей с \(i\) сломами количества записей, которые несостоятельны в этой последовательности.

Teamwork#89993
На его любимый праздник Фермер Джон хочет послать подарки своим друзьям. ФД позвал коров на помощь в заворачивании подарков.

\(N\) коров (\(1 \leq N \leq 10^4\)) ФД стоят в ряд, последовательно пронумерованные \(1 \ldots N\). Корова \(i\) имеет \(s_i\) - уровень мастерства в заворачивании подарков. ФД решил объединить коров в команды. Команда состоит из любого последовательного множества коров числом не более \(K\) коров (\(1 \leq K \leq 10^3\)), и корова не может быть более чем в одной команде. Поскольку коровы могут учиться друг у друга, уровень мастерства каждой коровы в команде может быть заменен на уровень мастерства самой мастеровитой коровы.

Помогите ФД определить максимально возможную сумму уровней мастерства, которую он может получить, оптимально сформировав команды.

ФОРМАТ ВВОДА (файл teamwork.in):

Первая строка ввода содержит \(N\) и \(K\). Следующие \(N\) строк содержат уровни мастерства \(N\) коров в порядке как они стоят. Каждый уровень мастерства это положительное целое число не более \(10^5\).

ФОРМАТ ВЫВОДА (файл teamwork.out):

Выведите наибольшую возможную сумму уровней мастерства, которую может получить ФД, сгруппировав коров по командам.

У фермера Джона огромная ферма с \(N\) амбарами (\(1 \le N \le 10^5\)), некоторые из которых уже покрашены, а некоторые - нет. ФД хочет покрасить эти оставшиеся амбары так, чтобы все амбары были покрашены, но у него есть краски всего трёх цветов. При этом нельзя красить в один цвет амбары, между которыми есть дорожка.

Сколькими способами ФД может покрасить оставшиеся амбары?

ФОРМАТ ВВОДА (файл barnpainting.in):

Первая строка содержит два целых числа \(N\) и \(K\) (\(0 \le K \le N\)), соответственно, количество амбаров на ферме и количество амбаров, которые уже покрашены.

Каждая из следующих \(N-1\) строк содержит два целых числа \(x\) и \(y\) (\(1 \le x, y \le N, x \neq y\)), описывающих дорожку между амбарами \(x\) и \(y\).

Каждая из следующих \(K\) строк содержит два целых числа \(b\) и \(c\) (\(1 \le b \le N\), \(1 \le c \le 3\)), указывающих, что амбар \(b\) покрашен в цвет \(c\).

ФОРМАТ ВЫВОДА (файл barnpainting.out):

Вычислите количество корректных способов покрасить оставшиеся амбары по модулю \(10^9 + 7\), так, чтобы никакие два амбара соединённых дорожкой, не были одного цвета.

ЃҐбЁ ЁЈа Ґв ў ЁЈаг.

€Ја  ­ зЁ­ Ґвбп б Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ё§ \(N\) Ї®«®¦ЁвҐ«м­ле 楫ле зЁбҐ« (\(2 \leq N \leq 262,144\)), Є ¦¤®Ґ ў ¤Ё Ї §®­Ґ \(0 \ldots 40\). ‡  ®¤Ё­ 室 ЃҐбЁ ¬®¦Ґв ‚§пвм ¤ў  б®бҐ¤­Ёе а ў­ле зЁб«  Ё § ¬Ґ­Ёвм Ёе ­  зЁб«® ­  1 Ў®«миҐ (­ ЇаЁ¬Ґа, ®­  ¬®¦Ґв § ¬Ґ­Ёвм ¤ўҐ б®бҐ¤­ЁҐ 7 ­  ®¤­г 8). –Ґ«м ЁЈал - ¬ ЄбЁ¬Ё§Ёа®ў вм §­ зҐ­ЁҐ б ¬®Ј® Ў®«ми®Ј® зЁб« , Є®в®а®Ґ ®­  ¬®¦Ґв Ї®«гзЁвм. Џ®¬®ЈЁвҐ Ґ©.

”ЋђЊЂ’ ‚‚Ћ„Ђ (д ©« 262144.in):

ЏҐаў п бва®Є  ўў®¤  ᮤҐа¦Ёв \(N\),   б«Ґ¤гойЁҐ \(N\) бва®Є § ¤ ов Ї®б«Ґ¤®ў вҐ«м­®бвм Ё§ \(N\) зЁбҐ«, б Є®в®але ­ зЁ­ Ґвбп ЁЈа .

”ЋђЊЂ’ ‚›‚Ћ„Ђ (д ©« 262144.out):

‚뢥¤ЁвҐ ­ ЁЎ®«м襥 зЁб«®, Є®в®а®Ґ ЃҐбЁ ¬®¦Ґв бЈҐ­ҐаЁа®ў вм

Џђ€Њ…ђ ‚‚Ћ„Ђ:

4
1
1
1
2

Џђ€Њ…ђ ‚›‚Ћ„Ђ:

3

‚ ЇаЁ¬ҐаҐ ЃҐбЁ б­ з «  б«Ёў Ґв ўв®аго Ё ваҐвмо 1 Ё Ї®«гз Ґв Ї®б«Ґ¤®ў вҐ«м­®бвм 1 2 2 ,   § вҐ¬ б«Ёў Ґв ¤ўҐ ¤ў®©ЄЁ ў 3. ‡ ¬ҐвЁ¬, зв® ­Ґ ®ЇвЁ¬ «м­® б«Ёў вм ЇҐаўлҐ ¤ўҐ Ґ¤Ё­Ёжл.

Ђўв®а: Mark Chen Bessie likes downloading games to play on her cell phone, even though she does find the small touch screen rather cumbersome to use with her large hooves.

She is particularly intrigued by the current game she is playing. The game starts with a sequence of \(N\) positive integers (\(2 \leq N \leq 262,144\)), each in the range \(0 \ldots 40\). In one move, Bessie can take two adjacent numbers with equal values and replace them a single number of value one greater (e.g., she might replace two adjacent 7s with an 8). The goal is to maximize the value of the largest number she can create. Please help Bessie score as highly as possible!

Формат входных данных:

The first line of input contains \(N\), and the next \(N\) lines give the sequence of \(N\) numbers at the start of the game.

Формат выходных данных:

Please output the largest integer Bessie can generate.

262144#89969
Бесси любит скачивать игры для своего мобильного телефона, хотя ей и кажется, что маленький сенсорный экран довольно неудобен в использовании из-за её больших копыт.

Её особенно заинтересовала игра, в которую она сейчас играет. Игра начинается с последовательности из N положительных целых чисел (2 ≤ N ≤ 262144), каждое из которых находится в диапазоне от 1 до 40. За один ход Бесси может взять два соседних числа с одинаковыми значениями и заменить их на одно число на единицу больше (например, она может заменить две соседние семёрки на восьмёрку). Цель состоит в том, чтобы максимизировать значение наибольшего числа в последовательности в конце игры. Пожалуйста, помогите Бесси набрать как можно больше очков.

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

Первая строка ввода содержит N, а следующие N строк дают последовательность из N чисел в начале игры.

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

Пожалуйста, выведите наибольшее целое число, которое может сгенерировать Бесси.

Примечание
В приведенном здесь примере Бесси сначала объединяет вторую и третью единицы, чтобы получить последовательность 1 2 2, а затем объединяет двойки в тройку. Обратите внимание, что объединение первых двух единиц не является оптимальным.
 

Беси любит играть на мобильном.

Игра начинается с последовательности \(N\) положительных целых чисел (\(2 \leq N \leq 248\)), каждое в диапазоне \(0 \ldots 40\). На каждом ходу Беси может взять два числа с равными величинами и заменить их число на 1 больше. (Например, она может заменить две соседние 7 на одну 8). Цель игры - максимизировать наибольшее число, которое она может получить. Помогите Беси.

ФОРМАТ ВВОДА (файл 248.in):

Первая строка ввода содержит \(N\), и последующие \(N\) строк дают последовательность чисел, с которых начинается игра.

ФОРМАТ ВЫВОДА (файл 248.out):

Выведите максимальное число, которое может сгенерировать Беси.

248#89965
Беси любит играть на мобильном.

Игра начинается с последовательности \(N\) положительных целых чисел (\(2 \leq N \leq 248\)), каждое в диапазоне \(0 \ldots 40\). На каждом ходу Беси может взять два числа с равными величинами и заменить их число на 1 больше. (Например, она может заменить две соседние 7 на одну 8). Цель игры - максимизировать наибольшее число, которое она может получить. Помогите Беси.

ФОРМАТ ВВОДА (файл 248.in):

Первая строка ввода содержит \(N\), и последующие \(N\) строк дают последовательность чисел, с которых начинается игра.

ФОРМАТ ВЫВОДА (файл 248.out):

Выведите максимальное число, которое может сгенерировать Беси.

Ферма Джона представлена решёткой \(N \times N\) полей (\(1 \le N \le 500\)). Каждое поле представлено символом латинского алфавита. Например:

ABCD
BXZX
CDXB
WCBA

Каждый день корова Беси прогуливается из верхнего левого угла в правый нижний, каждый раз двигаясь на один шаг вправо или вниз. Беси записывает в строку буквы, по которым прошлась. Она огорчится, если у неё получится палиндром (слово, которое читается одинаково слева направо и справа налево), поскольку тогда она запутается, в каком направлении двигалась.

Пожалуйста, помогите Беси определить количество различных маршрутов которыми она может получить палиндромы. Различные пути, которыми получаются одинаковые палиндромы учитывать множество раз. Выведите свой ответ по модулю 1,000,000,007.

ФОРМАТ ВЫВОДА (файл palpath.in):

Первая строка ввода содержит \(N\), и последующие \(N\) строк содержат \(N\) строк решётки, описывающей поля. Каждая строка содержит \(N\) символов в интервале A..Z.

ФОРМАТ ВЫВОДА (файл palpath.out):

Выведите количество различных путей Беси, формирующих палиндромы по модулю 1,000,000,007.

Mooo Moo#89940

Фермер Джон совершенно забыл, сколько у него коров. Он хочет их пересчитать с помощью микрофонов на полях, на которых собираются его коровы, поскольку он может определить количество коров по уровню шума.
N полей ФД (1 <= N <= 100) организованы в ряд вдоль длинной прямой дороги. Каждое поле может содержать различные виды коров. Всего у ФД имеется B видов коров (1 <= B <= 20), и корова вида I шумит с уровнем V(i) (1 <= V(i) <= 100). Кроме того, уровень шума распространяется строго в одном направлении по следующему закону: Если в некотором поле уровень шума X, то в следующем поле этот уровень становится X-1, следующем за ним, X-2 и т.д.
По заданному уровню шума, зафиксированном на каждом из полей, определите минимально возможное количество коров у ФД.
Уровень зафиксированного шума на каждом из полей не более 100,000.
PROBLEM NAME: mooomoo
Формат входных данных
* Строка 1: Целые числа N и B.
* Строки 2..1+B: Строка i+1 содержит целое число V(i).
* Строки 2+B..1+B+N: Строка 1+B+i содержит суммарный уровень шума всех коров, мычащих в поле i.
Формат выходных данных
* Строка 1: Минимальное количество коров у ФД, или -1, если не существует конфигурации коров, соответствующей входным данным


Примечание
Всего имеется 2 коровы вида #1 и 1 корова вида #2 на поле 2 и ещё есть 1 корова вида 1 в поле 4.

Problem 2: Cow Decathlon [Lewin Gan]
N коров Фермера Джона (1 <= N <= 20), последовательно пронумерованных от 1 до 20 готовятся к десятиборью, в котором имеется N различных событий (из чего следует, что его правильнее было называть N-борьем, в отличие десятиборья, в котором традиционно ровно 10 событий).
Корова I имеет уровень мастерства S_ij (1 <= s_ij <= 1000), когда соревнуется в событии j. Каждая корова должна соревноваться в одном и только одном событии и каждом событии должна участвовать некоторая корова.
Общий счёт для всех коров - это сумма их уровней мастерства для тех соревнований, в которых они соревнуются. Однако жюри может также добавить бонусные баллы, если оно особенно впечатлено.
Всего имеется B бонусов (1<=B<=20), которые может дать жюри. Бонус I описывается 3 числами: - если коровы получат не менее чем Pi баллов(1 <= Pi <= 40,000) за первые Ki событий (включая другие бонусы, полученные на этих событиях), то они получат дополнительные Ai баллов (1 <= Ai <= 1000).
Например, рассмотрим N=3 коров со следующими уровнями мастерства:
E V E N T | 1 | 2 | 3 --+---+---+-- C 1 | 5 | 1 | 7 --+---+---+-- O 2 | 2 | 2 | 4 --+---+---+-- W 3 | 4 | 2 | 1
Например, корова 1 заработает 7 баллов команде, если она поучаствует в событии 3.
Предположим, что судьи дадут один бонус (B=1), такой что если коровы заработают не менее 7 баллов в первых двух событиях, то они получат дополнительные 6 баллов. Следовательно, оптимально будет назначить корову 1 событию 1, корову 2 событию 3 и корову 3 событию 2. За первые два события корова 1 получит 5 баллов и корова 3 получит 2 балла, что в сумме даст 7 и удовлетворяет бонусу 1. Поэтому, общее количество заработанных баллов будет 5+2+4+6=17.
Помогите распределиться коровам по событиям так, чтобы максимизировать их общий счёт.
PROBLEM NAME: dec
Формат входных данных
* Строка 1: Два разделённых пробелом целых числа: N, B
* Строки 2..B+1: Строка i+1 содержит информацию о бонусе i задаваемом тремя разделёнными пробелами целыми числами: Ki, Pi, Ai.
* Строки B+2..B+N+1: Строки B+1+j содержат информацию о том, как корова i выполняет каждое из событий, с помощью N разделённых пробелами целых чисел: s_j1...s_jN.


Формат выходных данных
* Строка 1: Максимальное количество баллов, которые коровы могут получить, включая бонусы.


Примечание
Корова 1 выполнит событие 1, корова 3 выполнит событие 2, и корова 2 выполнит событие 3.

Pogo-Cow#89905

Для ускорения своей призовой коровы Беси, Фермер Джон имеет палку для каждой из ног Беси. Теперь Беси научилась ускоряться, но еще не научилась замедляться.
Для тренировки ФД разметил путь по прямой. В различных позициях этого пути он разместил N целей, в которых Беси должна приземляться (1 <= N <= 1000). Цель I расположена в позиции x(i) и имеет цену P(i) очков, которые получит Беси, если приземлится в этой точке.
Беси начинает прыжки из любой из этих целей по своему выбору, и ей разрешено двигаться только в одном направлении, прыгая от цели к цели. Каждый прыжок должен быть по расстоянию не меньше, чем предыдущий, и приземляться в целевой точке. Беси получает соответствующие очки за каждую цель, которой коснётся, включая ту, с которой начнёт. Определите максимальное количество очков, которое она может получить.

PROBLEM NAME: pogocow
Формат входных данных
* Строка 1: Целое число N.
* Строки 2..1+N: Строка i+1 содержит x(i) и p(i), целые в диапазоне 0..1,000,000.
Формат выходных данных
* Строка 1: Максимальное количество очков, которое может получить Беси.
Примечание
Беси прыгает из позиции x=4 (8 очков) в позицию 5 (6 очков), в позицию 7 (6 очков), в позицию 10(5 очков).


Фермер Джон забыл заделать дыру в изгороди на своей ферме и его N (1 <= N <= 1,000) коров сбежали и бедокурят. Каждая минута, когда корова находится вне изгороди, она "бедокурит" на 1 доллар. ФД должен посетить каждую корову, чтобы "усмирить" ее и прекратить долларовые потери от нее.
К счастью, коровы находятся вдоль одной прямой на различных растояниях от фермы. ФД знает расстояние Pi (-500,000 <= Pi <= 500,000, Pi != 0) каждой коровы i относительно ворот (позиция 0), из которых он стартует.
ФД двигается на 1 единицу расстояния за минуту и "усмиряет" корову мгновенно. Определите порядок, в котором ФД дожен посещать коров, так чтобы минимизировать свои долларовые потери.
PROBLEM NAME: cowrun
Формат входных данных
* Строка 1: Количество коров, N.
* Строки 2..N+1: Строка i+1 содержит целое число Pi.
Формат выходных данных
* Строка 1: Минимальная общая стоимость долларовых потерь
Примечание
Оптимальный порядок посещения --2, 3, 7, -12. ФД прибудет в позицию -2 на 2-ой минуте и получит ущерб в два доллара от этой коровы.
Потом он проследует в позицию 3 (расстояние 5), итого ущерб = 2+5=7 долларов от второй коровы.
Затем он потратит 4 минут чтобы добраться до коровы в позиции 7, с общей стоимостью потерь от этой коровы 7+4 = 11 долларов.
Наконец, он потратит 19 минут чтобы перейти в точку -12, и стоимость потерь от этой коровы будет 11 + 19 = 30 долларов.
Общие потери от всех коров будут 2 + 7 + 11 + 30 = 50 долларов.

Когда Фермер Джон не доит коров, собирает сено, выстраивает коров или строит изгороди, он сидит и читает хорошую книгу. С годами он собрал коллекцию из N книг (1 <= N <= 2,000), и хочет построить для них новое множество книжных полок.
Каждая книга I имеет ширину W(i) и высоту H(i). Книги необходимо ставить на полки в определенном порядке; например, первая полка должна содержать книги с номерами от 1 до k для некоторого k. Вторая полка должна содержать книгу k+1 и т.д. Каждая полка имеет общую ширину не более L (1 <= L <=1,000,000,000). Высота полки равна высоте самой высокой книги на этой полке, а высота множества книжных полок равна сумме высот на всех полках, поскольку полки ставятся одна поверх другой.
Помогите ФД вычислить минимально возможную высоту всего множества книжных полок.
PROBLEM NAME: bookshelf
Формат входных данных
* Строка 1: два разделенных пробелом целых числа: N и L.
* Строки 2..1+N: Строка i+1 содержит два разделенных пробелом целых числа : H(i) W(i). (1 <= H(i) <= 1,000,000; 1 <= W(i) <= L).
Формат выходных данных
* Строка 1: Минимально возможная высота множества полок.
Примечание
Всего 3 полки. Первая содержит книгу 1 (высота 5, ширина 7), вторая содержит книги 2..4 (высота 13, ширина 9), третья содержит книгу 5 (высота 3, ширина 8).
Bookshelf#89856

Когда Фермер Джон не доит коров, собирает сено, выстраивает коров или строит изгороди, он сидит и читает хорошую книгу. С годами он собрал коллекцию из N книг (1 <= N <= 100,000), и хочет построить для них новое множество книжных полок.
Каждая книга I имеет ширину W(i) и высоту H(i). Книги необходимо ставить на полки в определенном порядке; например, первая полка должна содержать книги с номерами от 1 до k для некоторого k. Вторая полка должна содержать книгу k+1 и т.д. Каждая полка имеет общую ширину не более L (1 <= L <=1,000,000,000). Высота полки равна высоте самой высокой книги на этой полке, а высота множества книжных полок равна сумме высот на всех полках, поскольку полки ставятся одна поверх другой.
Помогите ФД вычислить минимально возможную высоту всего множества книжных полок.
PROBLEM NAME: bookshelf
Формат входных данных
* Строка 1: два разделенных пробелом целых числа: N и L.
* Строки 2..1+N: Строка i+1 содержит два разделенных пробелом целых числа : H(i) W(i). (1 <= H(i) <= 1,000,000; 1 <= W(i) <= L).
Формат выходных данных
* Строка 1: Минимально возможная высота множества полок.
Примечание
Всего 3 полки. Первая содержит книгу 1 (высота 5, ширина 7), вторая содержит книги 2..4 (высота 13, ширина 9), третья содержит книгу 5 (высота 3, ширина 8).

Беси играет в видеоигру. В этой игре 3 буквы 'A', 'B', 'C' - все управление. Эти буквы можно нажимать в любом порядке, однако возможны только N (1<=N<=20) различных комбинаций. Комбинация I представлена строкой Si с длиной от 1 до 15 символов, содержащей только символы 'A', 'B', 'C'.
Когда Беси нажимает комбинацию букв, соответствующую какой-то из введенных строк, она получает один балл. Комбинации могут перекрываться и даже заканчиваться одновременно. Например, если N=3 и три возможные комбинации есть "ABA", "CB" и "ABACB", а Беси набрала ABACB, она получит 3 балла. Беси может получать очко за каждую комбинацию более чем один раз.
Беси конечно хочет заработать как можно больше баллов. Если она нажмет ровно K (1<=K<=1000) клавиш, какое максимальное количество баллов она может заработать?
PROBLEM NAME: combos
Формат входных данных
* Строка 1:Два разделенных пробелом целых числа: N и K.
* Строки 2..N+1: Строка i+1 содержит только одну строку Si, представляющую комбинацию i.
Формат выходных данных
* Строка 1: Одно целое число, максимальное количество баллов, которое может набрать Беси


Примечание
Оптимальная последовательность клавиш есть ABACBCB, которая дает 4 балла 1 от ABA, 1 от ABACB, и 2 от CB.

Moo#89815

Коровы придумали новую игру “Moo”. Они стоят в ряд, где каждая корова отвечает за то, чтобы назвать конкретную букву как можно быстрей.
Последовательность букв определена до бесконечности. Ее начало представлено ниже:
m o o m o o o m o o m o o o o m o o m o o o m o o m o o o o o
Эта последовательность проще всего описывается рекурсивно. Пусть S(0) будет последовательность из трех символов "m o o". S(k) получается конкатенацией: копии последовательности S(k-1), затем “m o … o” c k+2 символами ‘o’ и затем еще одна копия последовательности S(k-1). Например:
S(0) = "m o o" S(1) = "m o o m o o o m o o" S(2) = "m o o m o o o m o o m o o o o m o o m o o o m o o"
Очевидно, так можно построить строку любой длины и эта строка используется для игры в “Moo”.
Беси, которая про себя думает, что она умная корова, хочет предсказать, Каким будет символ на позиции N – ‘m’ или ‘o’. Помогите ей!
PROBLEM NAME: moo
Формат входных данных
* Строка 1: Одно целое число N (1 <= N <= 10^9).
Формат выходных данных
* Строка 1: Единственная строка вывода должна содержать один символ, ‘m’ или ‘o’.
Problem 3: Tile Exchanging [Ray Li]
Фермер Джон хочет покрыть пол в своем амбаре коллекцией квадратных плиток, которые он купил в магазине. К несчастью, Он не измерял точно размер своего амбара перед покупкой, поэтому сейчас он должен обменять часть плиток на другие, тоже квадратные, но других размеров.
N квадратных плиток которые ФД купил изначально имеют длины сторон A1...AN. Он хочет обменять часть из этих плиток так, чтобы общая сумма площадей всех плиток была ровно M.
При этом необходимо соблюсти правила обмена, установленные магазином: - плитка со стороной с длиной Ai может быть обменяна на другую плитку со стороной с длиной Bi за цену (Ai-Bi)* (Ai-Bi). Однако менять можно только ранее купленные плитки. Нельзя Менять плитку, полученную в результате обмена некоторой из ранее купленных плиток. Например, нельзя обменять плитку со стороной 3 на плитку со стороной 2 и потом плитку со стороной 2 поменять на плитку со стороной 1.
Определите минимальное количество денег, которое требуется ФД, чтобы сделать сумму площадей плиток равной M. Выведите –1, если невозможно получить площадь M.
PROBLEM NAME: tilechng
Формат входных данных
* Строка 1: Два разделенных пробелом целых числа, N (1<=N<=10) и M (1<=M<=10,000).
* Строки 2..1+N: Каждая строка содержит одно целое число (от A1 до AN, описывающих длины сторон входных квадратных плиток (1<=Ai<=100).
Формат выходных данных
* Строка 1: Минимальная стоимость обменов чтобы получить площадь M, или –1, если получить площадь M невозможно.
Примечание
Обменяем первую плитку со стороной 3 на плитку со стороной 2 square, а вторую плитку со стороной 3 на плитку со стороной 1. Это дает суммарную площадь 4+1+1=6 за цену 4+1=5.

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

Пример: в последовательности 5 8 13 9 17 12 21 25 можно выбрать:

  • 5 9 17 21 25 или 5 13 17 21 25 (остаток 1 при делении на 4, длина 5)
  • 8 12 (остаток 0 при делении на 4, длина 2)

Максимальная длина = 5.

Напишите программу, которая находит эту максимальную длину.

Формат входных данных

  • В первой строке число n (1 ≤ n ≤ 20000)
  • Во второй строке n чисел через пробел

Формат выходных данных

  • Длина самой большой такой подпоследовательности
Поделиться
Класснуть