Информатика

7 592 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Herdle#90163
Коровы создали новый вид пазлов, который назвали Herdle.

Каждый день они выпускают новый пазл. Пазл представляет собой решётку 3*3, гже каждая клетка занята коровой определённой породы. Всего имеется 26 различных видов пород, которые представляются большими латинским буквами от A до Z. Играющий должен узнать тип породы в каждой клетке через серию запросов. В каждом запросе от представляет 3*3 латинских букв. Ответ формируется следующим образом: если буквы угаданы, они подсвечиваются зелёным, Буквы верной породы, но не на своём месте подсвечиваются жёлтым.

Количество подсвеченных указывает, сколько их должно быть. Например, предположим, что гипотеза содержит 4 символа A, а правильный ответ содержит только 2 символа A, причём ни одна позиция не угадана. Тогда в ответе на этот запрос только 2 символа A будут подсвечены жёлтым. В общем случае, если \(x\) коров определённой породы в запросе и только \(y\) - в правильном ответе (не считая коров, которые уже стоят на своём месте и будут подсвечены зелёным), только \(y\) из этих \(x\) коров будут подсвечены жёлтым.

По заданным правильному ответу и запросу вычислите количество квадратов, подсвеченных зелёным цветом и количество квадратов, подсвеченных жёлтым цветом.

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

Первые 3 строки ввода содержат решётку, представляющую правильный ответ. Слеующие 3 строки представляют запрос.

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

Выведите две строки. В первой - количество квадратов, которые будут подсвечены зелёным цветом, во второй - количество квадратов, которые будут подсвечены жёлтым цветом

Drought#90162

\(N\) (\(1 \leq N \leq 10^5\)) коров Фермера Джона выстроены в ряд так, что \(i\)-ая корова в этому ряду имеет уровень голода \(h_i\) (\(0 \leq h_i \leq 10^9\)). Поскольку коровы - социальные животные и хотят есть вместе, единственный способ уменьшить уровень голода его коров - выбрать двух соседних коров с номерами \(i\) и \(i+1\) и скормить каждой из них по мешку кукурузы, чтобы уменьшить уровень голода каждой из них на один.

ФД хочет накормить своих коров так, чтобы все имели один и тот же некоторый не отрицательный уровень голода. Помогите ФД определить минимальное количество мешков кукурузы, которое ему потребуется, или -1, если это сделать невозможно.

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

Каждый ввод состоит из нескольких независимых тестов, каждый из которых нужно решить правильно, чтобы решить полностью входной тест. Первая строка содержит \(T\) (\(1\le T\le 100\)) - количество тестов на вводе. Каждый тест описывается парой строк. Первая строка в паре содержит \(N\), а вторая - \(h_1,h_2,\ldots,h_N\). Гарантируется, что сумма всех \(N\) в тесте не превысит \(10^5\). Значения \(N\) могут различаться внутри ввода.

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

Выведите \(T\) строк, по одной для каждого теста на вводе.

Заметим что требуется использовать 64-битное целое для ответа (например "long long" в C/C++)

Фермер Джон реорганизует свою электронную почту. Его экран выглядит как вертикальный список папок с левой стороны экрана и и вертикальный список писем с право стороны экрана. Имеется \(M\) папок, пронумерованных \(1 \ldots M\) (\(1 \le M \le 10^4)\). Его почта сейчас содержит \(N\) писем, пронумерованных \(1\ldots N\) (\(1 \le N \le 10^5\)); \(i\)-ое письмо необходимо переместить в папку \(f_i\) (\(1\le f_i\le M\)).

Экран ФД небольшой, поэтому он может видеть одновременно \(K\) (\(1\le K\le \min(N,M)\)) папок и \(K\) писем одновременно. Изначально, его экран показывает папки \(1 \ldots K\) слева и письма \(1 \ldots K\) справа. Для того чтобы увидеть другие папки и письма, он должен скроллить соответствующие списки. Например, если он проскроллит вниз на одну позицию в списке папок, он увидит папки \(2 \ldots K+1\), а если проскроллит ещё на одну позицию вниз, он увидит папки \(3 \ldots K+2\). Когда ФД переносит письмо в папку, оно исчезает из списка писем, и все нижние письма поднимаются на одну позицию вверх. Например, пусть на экране отображены письма \(1, 2, 3, 4, 5\) и ФД переносит письмо 3 в соответствующую папку, тогда видимая часть списка писем станет такой: \(1, 2, 4, 5, 6\). ФД может переносить письма только в назначенные им папки.

К несчастью, колесо скроллинга на мышке ФД сломалось, и он может скроллить только вниз и не может скроллить вверх. Единственное подобие скроллинга вверх если он видит последние \(K\) писем из своего списка и переносит в папку одно из них. В этом случае после переноса список опять покажет последние \(K\) ещё не разнесенных писем, что соответствует скроллингу вверх на одно письмо. Если осталось менее \(K\) писем, они отображаются все.

Помогите ФД определить, может ли он разнести по папкам все свои письма.

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

Первая строка ввода содержит \(T\) (\(1 \le T \le 10\)), количество подслучаев в тесте, каждый из которых должен решаться независимо. Далее идут \(T\) подслучаев. Для каждого подслучая первая строка содержит \(M\), \(N\), \(K\). Вторая строка содержит \(f_1 \ldots f_N\).

Гарантируется, что сумма \(M\) по всем подслучаям не превысит \(10^4\), а сумма \(N\) по всем подслучаям не превысит \(10^5\).

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

Выведите \(T\) строк, каждая содержит YES или NO, указывая может ли ФД разнести письма для каждого из \(T\) подслучаев.

\(N\) коров (\(1 \leq N \leq 10^5\)) Фермера Джона разместились на его ферме и хотят построить коммуникационную сеть для обмена электронными текстовыми сообщениями.

\(i\)-ая корова размещена в точке \((x_i,y_i)\), где \(0 \leq x_i \leq 10^6\) \(0 \leq y_i \leq 10\). Стоимость построения коммуникационной линии между коровами \(i\) и \(j\) есть квадрат расстояния между ними: \((x_i-x_j)^2 + (y_i-y_j)^2\).

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

**Замечание : Лимитна время на тест = 4s, в дфа раза больше обычного..**

Формат ввода (с клавиатуры / stdin):

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

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

Выведите минимальную стоимость сети, которая позволит коммуницировать всем коровам. Заметим, что стоимость может быть очень большой, и может потребовать 64-битную целую типа "long long" в C++.

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

ФД это заметил и попросил Эльзу вести учёт засыпаний Беси. Всего имеется \(N\) (\(1\le N\le 10^5\)) периодов, когда проходили занятия. И Эльза записала, что Беси засыпала \(a_i\) (\(0\le a_i\le 10^6\)) раз во время \(i\)-го периода. Общее количество засыпаний Беси не превышает \(10^6\).

Эльза хочет показать ФД, что Беси всегда засыпала одинаковое количество раз. Но единственный способ, которым она это может сделать - объединить два соседних периода проведения занятий. Например, если \(a=[1,2,3,4,5],\) то Эльза может объединить второй и третий периоды и лог станет таким \([1,5,4,5]\).

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

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

Каждый ввод содержит \(T\) (\(1\le T\le 10\)) тестов, которые нужно решать независимо.

Первая строка содержит \(T\) - количество тестов. Затем следуют \(T\) тестов, каждый описывается парой строк. Первая строка пары содержит \(N\), а вторая содержит \(a_1,a_2,\ldots,a_N\).

Гарантируется, что внутри каждого теста сумма всех \(a_i\) не превышает \(10^6\). Также гарантируется, что сумма всех \(N\) в этих тестах не превысит \(10^5\).

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

Выведите \(T\), содержащих минимальное число модификаций, которое может выполнить Эльза, чтобы уравнять все числа в логах для каждого теста.

Фермер Джон выстроил в ряд своих \(N\) коров для фотографии.

Изначально коровы выстроились в порядке \(a_1,a_2,\ldots,a_N\) слева направо. Цель ФД выстроить их в порядке \(b_1,\ldots,b_N\) слева направо. Чтобы достичь своей цели, ФД может выполнить несколько модификаций порядка. Каждая модификация состоит в том, чтобы выбрать корову и переместить её влево на некоторое количество позиций.

Вычислите минимальное количество модификаций, которое потребуется ФД, чтобы выстроить коров в желаемом порядке.

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

Первая строка ввода содержит \(N\). Вторая строка содержит \(a_1,a_2,\ldots,a_N\). Третья строка содержит \(b_1,b_2,\ldots,b_N\).

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

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

Blocks#90150
У Беси есть 4 деревянных кубика. На каждой из 6 сторон каждого кубика написана одна буква.

По заданным буквам на каждом из 4 кубиков и списку слов, которые Беси хочет составлять из этих кубиков, определите слова из списка, которые она сможет составить, используя эти кубики.

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

Первая строка ввода содержит \(N\) (\(1\le N\le 10\)), количество слов, которые Беси хочет составить. Каждая из следующих 4 строк содержат строку из 6 символов - больших английских букв, представляющих буквы на сторонах кубика. Следующий \(N\) строк содержат \(N\) слов, которые Беси хочет составлять. Каждое слово имеет длину от 1 до 4 букв (больших английских).

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

Для каждого слова из списка Беси выведите YES, если она может составить это слово из своих кубиков и NO в противном случае.

У Беси есть массив \(a_1, \ldots, a_N\), где \(1 \leq N \leq 300\) и \(0 \leq a_i \leq 10^9\) для всех \(i\). Она не хочет сообщать Вам сам массив \(a\), но может отвечать на ваши запросы то есть для каждой пары индексов \(i \leq j\), Беси скажет Вам \(r_{i, j} = \max a[i\ldots j] - \min a[i\ldots j]\). По заданным значениям \(r\) сконструируйте массив, который мог бы быть оригинальным массивом Беси. Значения в этом массиве должны быть в интервале \([-10^9, 10^9]\).

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

Первая строка содержит число \(N\).

Далее следуют \(N\) строк. \(i\)-ая из этих строк содержит число \(r_{i, i}, r_{i, i + 1}, \ldots, r_{i, N}\).

Гарантируется, что существует некоторый массив с числами в интервале \([0, 10^9]\) такой, что для всех \(i \leq j\), \(r_{i, j} = \max a[i\ldots j] - \min a[i\ldots j]\).

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

Выведите одну строку, содержащую \(N\) целых чисел \(b_1, b_2, \ldots, b_N\) в интервале \([-10^9, 10^9]\) представляющих Ваш массив. Они должны удовлетворять \(r_{i, j} = \max b[i\ldots j] - \min b[i\ldots j]\) для всех \(i \leq j\).

Mountains#90142
**Обратите внимание: время на тест для этой задачи 5s, в 2.5 раза больше, чем обычно. Предельный размер памяти также увеличен в два раза по сравнению с умолчанием.

Имеется \(N\) (\(1 \leq N \leq 2000\)) гор в ряд на ферме Джона Это может быть выражено как массив высот \(h_1,h_2,\dots,h_N\). Для горы \(i\), Вы можете увидеть другую гору \(j\) если нет гор строго выше чем линия взгляда, соединяющая горы \(j\) и \(i\). Формально, для двух гор \(i < j\), они могут видеть друг друга, если не существует такого \(k\) \(i < k < j\) и \((k, h_k)\) выше чем отрезок, соединяющий \((i, h_i)\) и \((j, h_j)\). Имеется \(Q\) (\(1 \leq Q \leq 2000\)) изменений высот, когда высота одной горы возрастает. Определите общее количество неупорядоченных пар гор, которые могут видеть друг друга после каждого изменения.

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

Строка \(1\) содержит \(N\).

Строка \(2\) содержит \(N\) высот \(h_1,h_2,\dots,h_N\) (для каждого \(i\), \(0 \leq h_i \leq 10^9\)).

Строка \(3\) содержит \(Q\).

Строки \(4\) - \(3+Q\) содержат \(x\), \(y\) (\(1 \leq x \leq N\), \(1 \leq y\)) где \(x\) индекс горы, \(y\) - величина на которую эта гора возрастает. Гарантируется, что новая высота горы не превысит \(10^9\).

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

\(Q\) строк, на каждой общее количество неупорядоченных пар гор, которые могут видеть друг друга после каждого обновления.

ПРМЕР ВВОДА:

5
2 4 3 1 5
3
4 3
1 3
3 2
Беси хочет посмотреть Bovine Genomics: The Documentary, но она не хочет идти одна. К сожалению, её друзья не очень хотят идти с ней. Ей нужно чем то их привлечь. У неё есть два инструмента : mooney и мороженое.

У Беси \(N\) (\(1 \le N \le 2000\)) друзей. Однако они разные! Друг \(i\) имеет счёт популярности \(P_i\) (\(1 \le P_i \le 2000\)), и Беси хочет максимизировать сумму популярности друзей, которые пойдут с ней. Друг \(i\) пойдёт с ней только если она даст ему \(C_i\) (\(1 \le C_i \le 2000\)) "moonies". Друг \(i\) также может сделать скидку в \(1\) "mooney", если она даст ему \(X_i\) (\(1 \le X_i \le 2000\)) мороженых. Беси может получить сколько угодно скидок.

У Беси есть \(A\) moonies и \(B\) мороженых (\(0 \le A, B \le 2000\)). Помогите ей определить максимальную сумму популярностей, которую она может добиться, если потратит mooney и мороженое оптмально.

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

Строка \(1\) содержит три числа \(N\), \(A\), \(B\), представляющих количества друзей, mooney и мороженых, которые есть у Беси соответственно.

Каждая из последующих \(N\) строк содержит три числа \(P_i\), \(C_i\), \(X_i\), представляющих популярность (\(P_i\)), mooney, за которые он согласится пойти, количество мороженых для скидки в \(1\) mooney для друга \(i\) (\(X_i\)).

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

Выведите максимальную сумму популярностей друзей Беси, в предположении что она оптимально потратит moonie и мороженые.

У Эльзы есть программа, которая получает на ввод массив из \(N\) (\(1\le N\le 100\)) переменных \(b[0],\dots,b[N-1]\), каждая из которых равна 0 или 1 и возвращает результат применяя последовательность операторов if / else if / else, указанную на вводе. Каждый оператор проверяет значение не более одной переменной и возвращает 0 или 1. Примером такой программы может быть:

if (b[1] == 1) return 1;
else if (b[0] == 0) return 0;
else return 1;

Например, если ввод в эту программу есть "10" (то есть, \(b[0] = 1\) и \(b[1] = 0\)), тогда вывод должен быть 1

Эльза должна сказать правильный ответ для \(M\) (\(1\le M\le 100\)) различных вводов. Бесси сейчас пытается сделать "реверс инжиниринг" для программы Эльзы. К несчастью, Эльза может и солгать - то есть не существует программы вида указанного выше, которая выведет ответы как сказала Эльза.

Для каждого из \(T\) (\(1\le T\le 10\)) подтестов определит, лгала Эльза или нет.

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

Первая строка содержит \(T\), количество подтестов.

Каждый подтест начинается с двух целых чисел \(N\) и \(M\), за которыми следуют \(M\) строк, каждая из которых содержит \(N\) 0 и 1 представляющих ввод, т.е. значения \(b[0] \ldots b[N-1]\)) и один дополнительный символ (0 или 1), представляющий ответ. Подтесты разделены пустыми строками.

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

Для каждого тесты выведите "OK" или "LIE" на отдельной строке.

У Фермера Джона имеется \(N\) (\(1 \le {N} \le {10^5}\)) коров, каждая из которых имеет породу или Guernsey(G) или Holstein(H). Они выстроились в ряд заняв позиции \(1\dots N\).

Поскольку все коровы голодные, ФД решил выложить пакты с травой в некоторых позициях \(1\dots N\). Коровы разных пород едят разные типы травы. Каждый пакет травы должен содержать траву только одного типа (для G или для H). Он не может разместить пакеты с разной травой в одной и той же позиции. Каждый пакет травы может накормить неограниченное количество коров соответствующего типа.

Каждая корова готова пройти не более \(K\) (\(0 \le {K} \le N-1\)) позиций чтобы добраться до пакета с травой. Определите минимальное количество пакетов с травой, необходимое чтобы накормить всех коров. Любая конфигурация, удовлетворяющая указанным выше ограничениям, будет рассматриваться как корректная.

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

Каждый тест состоит из \(T\) подтестов, описывающих расположение коров. Первая строка сдержит \(T\) (\(1 \le T \le 10\)). Далее следует \(T\) подтестов.

Каждый подтест начинается со строки содержащей \(N\) и \(K\). Следующая строка содержит строку длины \(N\), в которой каждый символ обозначает породу коровы на позиции \(i\) (G или H).

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

Для каждого из \(T\) подтестов выведите две строки. В первой строке выведите минимальное количество пакетов с травой, которые требуются. Во второй строке нужно вывести строку из \(N\) символов, которая описывает Ваше решение. \(i\)-ый символ этой строки указывает что нужно разместить в позиции \(i\): '.' - ничего 'G' - пакет с травой типа G 'H' - пакет с травой типа H Любая корректная конфигурация будет принята.

Фермер Джон планирует открыть новый университет для коров!

Имеется \(N\) (\(1 \le N \le 10^5\)) коров, которые потенциально могут посещать университет. Каждая корова готова платить за обучение максимум \(c_i\) (\(1 \le c_i \le 10^6\)). Фермер Джон может установить плату за обучение, которую все коровы должны оплатить. Если эта плата больше, чем корова готова платить, она не платит и не учится в университете. Фермер Джон хочет установить такую оплату, чтобы получить максимальную сумм оплат. Определите эту максимальную сумму и установленную плату за обучение.

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

Первая строка содержит \(N\). Вторая строка содержит \(N\) целых чисел \(c_1, c_2, \dots, c_N\), где \(c_i\) - это максимальная плата, которую готова платить корова \(i\).

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

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

Заметим, что надо использовать 64-битный целый тип, например "long" в Java, или "long long" в C/C++).

У Беси есть коллекция связных неориентированных графов \(G_1,G_2,\ldots,G_K\) (\(2\le K\le 5\cdot 10^4\)). Для каждого i (\(1\le i\le K\)), \(G_i\) имеет ровно \(N_i\) (\(N_i\ge 2\)) вершин, помеченных \(1\ldots N_i\) и \(M_i\) (\(M_i\ge N_i-1\)) ребер. Каждый \(G_i\) может содержать циклы, но нет двух и более ребер между парой вершин.

Сейчас Эльза создаёт новый неориентированный граф \(G\) с \(N_1\cdot N_2\cdots N_K\) вершинами, каждая из которых помечена \(K\)-плетом \((j_1,j_2,\ldots,j_K)\), где \(1\le j_i\le N_i\). В \(G\) две вершины \((j_1,j_2,\ldots,j_K)\) и \((k_1,k_2,\ldots,k_K)\) соединены ребром, если для всех i \(1\le i\le K\), \(j_i\) и \(k_i\) соединены ребром в \(G_i\).

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

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

Первая строка содердит \(K\), количество графов.

Описание каждого графа начинается с \(N_i\) и \(M_i\) в одной строке, за которой следуют \(M_i\) ребер.

Последовательные графы разделены пустыми строками для читабельности. Гарантируется, что \(\sum N_i\le 10^5\) и \(\sum M_i\le 2\cdot 10^5\).

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

Сумма расстояний от вершины \((1,1,\ldots,1)\) и каждой вершины достижимой от неё по модулю \(10^9+7\).

Пастбище Фермера Джона можно рассматривать решётку из квадратных ячеек размером \(N\times M\) (\(2\le N\le 10^9\), \(2\le M\le 2\cdot 10^5\)) (как большая шахматная доска). Ячейка в строке \(x\) сверху в колонке \(y\) обозначается как \((x,y)\) для каждого \(x\in [1,N], y\in [1,M]\). Далее для каждого \(y\in [1,M]\), \(y\)-ая колонка ассоциируется со стоимостью \(c_y\) (\(1\le c_y\le 10^9\)).

Беси начинает в ячейке \((1,1)\). Если она находится в ячейке \((x,y)\), она может выполнить одно из следующих действий:

  • Если \(y<M\), Беси может переместиться в следующую колонку (увеличивая \(y\) на 1) за цену \(x^2\).
  • Если \(x<N\), Беси может переместиться в следующую строку (увеличивая \(x\) на 1) за цену \(c_y\).

ВАм даются \(Q\) (\(1\le Q\le 2\cdot 10^5\)) независимых запросов, каждый в виде \((x_i,y_i)\) (\(x_i\in [1,N], y_i\in [1,M]\)), вычислите минимально возможную цену для Беси переместиться из \((1,1)\) в \((x_i,y_i)\). compute the minimum possible total

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

Первая строка содержит \(N\) и \(M\).

Вторая строка содержит \(M\) разделённых пробелом целых чисел \(c_1,c_2,\ldots,c_M\).

Третья строка содержит \(Q\).

Каждая из последующих \(Q\) строк содержит два целых числа \(x_i\) и \(y_i\).

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

\(Q\) строк, содержащих ответы на каждый запрос.

Заметим, что ответ требует использования 64-битного целого, например "long long" в C/C++).

Это малоизвестный факт, что у коров свой алфавит - "cowphabet". Он состоит из 26 букв от a' до 'z', однако порядок букв в этом "cowphabet" может отличаться от стандартного порядка 'abcdefghijklmnopqrstuvwxyz'.

Коротая время, Милдред бормочет cowphabet опять и опять. Фермер Нхой хочет узнать, сколько раз она пробормотала cowphabet.

По заданной строке букв, которые услышал ФН, вычислите минимальное количество раз, которое Милдред пробормотала весь cowphabet. ФН мог не услышать некоторые из букв, которые бормотала Милдред.

Замечание: время на тест для этой задачи удвоено.

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

Единственная строка ввода содержит строку маленьких букв, которые услышал ФН. Эта строка имеет длину от \(1\) до \(10^5\).

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

Выведите минимальное количество раз, которое Милдред произнесла весь cowphabet.

Telephone#90133
\(N\) коров Фермера Джона, последовательно пронумерованные, \(1 \ldots N\) выстроены в ряд (\(1\le N\le 5\cdot 10^4\)). \(i\)-ая корова имеет идентификатор породы \(b_i\) в интервале \(1 \ldots K\), with \(1\le K\le 50\). Коровы нуждаются в Вашей помощи чтобы узнать, как быстрее передать сообщение от коровы \(1\) корове \(N\).

\(|i-j|\) минут требуется, чтобы передать сообщение от коровы \(i\) к корове \(j\). Однако не все породы готовы взаимодействовать друг с другом, что описано в матрице \(S\) размером \(K \times K\), где \(S_{ij} = 1\) если корова породы \(i\) готова передать сообщение корове породы \(j\) и 0 в противном случае. Необязательно истина то, что \(S_{ij}=S_{ji}\), и даже может быть случай, когда \(S_{ii} = 0\), то есть корова породы \(i\) не будет передавать сообщение корове своей породы.

Определите минимальное количество времени, которое потребуется для передачи сообщения.

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

Первая строка содержит \(N\) и \(K\).

Следующая строка содержит \(N\) разделённых пробелом целых чисел \(b_1,b_2,\ldots,b_N\).

Следующие \(K\) строк описывают матрицу \(S\). Каждая строка состоит из строки из K бит. \(S_{ij}\) \(j\)-ый бит \(i\)-ой строки сверху.

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

Выведите одно целое число - минимальное количество требуемого времени. Если невозможно передать сообщение от коровы \(1\) к корове \(N\), выведите \(-1\).

Коровы играют в игру со множеством из \(N\) интервалов (\(1\le N\le 2\cdot 10^5\)), где \(i\)-ый интервал начинается в позиции \(a_i\) на числовой прямой, а заканчивается в позиции \(b_i \geq a_i\). Оба числа \(a_i\) and \(b_i\) - целые, в интервале \(0 \ldots M\), где \(1 \leq M \leq 5000\).

Чтобы играть в эту игру, Беси выбирает некоторый интервал, например \(i\)-ый. И Эльза выбирает некоторый интервал, например, \(j\)-ый, возможно тот же самый. Для заданной величины \(k\) они выигрывают, если \(a_i + a_j \leq k \leq b_i + b_j\).

Для всех \(k\) в интервале \(0 \ldots 2M\), посчитайте количество упорядоченных пар \((i,j)\) для которых Беси и Эльза выиграют в эту игру.

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

Первая строка ввода содержит \(N\) и \(M\). Каждая из последующих \(N\) строк описывает интервал в терминах целых чисел \(a_i\) и \(b_i\).

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

Выведите \(2M+1\) строку, по одной для каждого \(k\) в интервале \(0 \ldots 2M\).

Ферма Джона состоит из множества \(N\) полей \((1 \leq N \leq 10^5)\), последовательно пронумерованных \(1 \ldots N\). Между этими полями имеется \(M\) двунаправленных дорожек \((0 \leq M \leq 10^5)\), соединяющих пары полей.

На этой ферме имеется два амбара - один в поле \(1\), другой в поле \(N\). ФД хочет быть уверен, что имеется путь между двумя амбарами последовательностью дорожек. Оно готов построить до двух новых дорожек, чтобы добиться своей цели. Стоимость построения дорожки между полями \(i\) и \(j\) есть \((i-j)^2\).

Помогите ФД определить минимальную стоимость сделать так, чтобы амбары \(1\) и \(N\) стали достижимы друг для друга.

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

Каждый входной тест содержит \(T\) под тестов (\(1\le T\le 20\)), все из которых должны быть решены правильно, чтобы пройти этот тест.

Первая строка ввода содержит \(T\), за которым следуют \(T\) подтестов.

Каждый подтест начинается с двух целых чисел \(N\) и \(M\). Каждая из последующих \(M\) строк содержит два целых числа \(i\) и \(j\), означающих путь между двумя различными полями \(i\) и \(j\). Гарантируется, что имеется не более одного пути между любыми двумя полями. и что сумма \(N+M\) для всех подтестов не более \(5 \cdot 10^5\).

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

Выведите \(T\) строк. \(i\)-ая строка должна содержать одно целое число, минимальную стоимость для \(i\)-го подтеста.

У Фермера Джона длинная ферма вдоль скоростной дороги, которую можно рассматривать как числовую прямую. Вдоль фермы имеется \(K\) травяных пастбищ \(1 \leq K \leq 2\cdot 10^5\)); \(i\)-ое пастбище расположено в позиции \(p_i\) и имеет величину вкусности \(t_i\) (\(0\le t_i\le 10^9\)). Фермер Нхой уже расположил свои \(M\) коров (\(1 \leq M \leq 2\cdot 10^5\)) в позициях \(f_1 \ldots f_M\). Все \(K+M\) этих чисел различны и находятся в интервале \([0,10^9]\).

ФД хочет выбрать \(N\) (\(1\le N\le 2\cdot 10^5\)) (не обязательно в целых числах) для размещения своих коров. Эти числа должны отличаться от позиций занимаемых коровами ФН, но они могут находится в позициях травяных пастбищ.

Корова какого фермера находится ближе к травяному пастбищу, тот и объявляется собственником этого пастбища. Если коровы обоих фремеров находятся на одинаковом расстоянии от пастбища, то оно объявляется принадлежащим ФН.

По заданным позициям коров ФН и вкусностям пастбищ определите максимальную вкусность суммарную, которой может добиться ФД оптимальным размещением своих коров.

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

Первая строка содержит \(K\), \(M\), \(N\).

Каждая из последующих \(K\) строк содержит два разделённых пробелом целых числа \(p_i\) и \(t_i\).

Каждая из последующих \(M\) строк содержит \(f_i\).

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

Одно целое число, максимальную суммарную вкусность. заметим, что ответ может превысить 32-битное целое число, поэтому нужно использовать 64-битное, например long long в С++.

Поделиться
Класснуть