Жадный алгоритм

125 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
п»ї

\(N\) \((1 \leq N \leq 2 \cdot 10^5)\) коров Фермера Джона выстроены в круг так, что для каждой коровы \(i\) в промежутке \(1,2,\dots,N-1\), справа от коровы \(i\) расположена корова \(i+1\), а справа от коровы \(N\) находится корова \(1\). У каждой коровы имеется ведро целочисленной ёмкостью \(a_i\) \((1 \leq a_i \leq 10^9)\) литров. Все вёдра изначально заполнены молоком.

Каждую минуту коровы обменивается молоком по правилу, описанному в строке \(s_1s_2\dots s_N\) , состоящей только из символов \(\text{�L’}\) и \(\text{�R’}\). Если у коровы есть хотя бы \(1\) литр молока, она отдаст ровно \(1\) литр молока корове слева от неё, если \(s_i=\text{�L’}\), или справа от неё, если \(s_i=\text{�R’}\). Все обмены происходят одновременно (то есть, если у коровы полное ведро и она отдаёт литр молока и получает литр молока, то её молоко сохраняется). Если количество молока превысит \(a_i\), то лишнее молоко будет утеряно.

ФД хочет узнать после \(M\) минут \((1 \leq M \leq 10^9\)), какое количество молока останется у всех коров.?

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

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

Вторая строка содержит строку \(s_1s_2\dots s_N\) состоящую только из символов \(\text{�L’}\) или \(\text{�R’}\), обозначающих направление, в котором каждая корова будет передавать своё молоко.

Третья строка содержит целые числа \(a_1, a_2, \dots, a_N\), ёмкости каждого ведра.

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

Выведите одно целое число, сумму молока всех коров после \(M\) минут.

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

ПР�МЕР ВВОДА:

3 1
RRL
1 1 1

ПР�МЕР ВЫВОДА:

2
Коровы \(2\) и \(3\) передадут друг другу по 1 литру молока, поэтому их молоко сохранится. Когда корова \(1\) передаст свой литр молока корове \(2\), ведро у той переполнится и один литр молока будет потерян на 1-ой минуте.

ПР�МЕР ВВОДА:

5 20
LLLLL
3 3 2 3 3

ПР�МЕР ВЫВОДА:

14
Каждая корова передаёт литр молока и получает литр молока, поэтому всё молоко сохранится вне зависимости от количества минут.

ПР�МЕР ВВОДА:

9 5
RRRLRRLLR
5 8 4 9 3 4 9 5 4

ПР�МЕР ВЫВОДА:

38
�значально имеется всего 51 литр молока. Через 5 минут коровы \(3\), \(6\), \(7\) потеряют 5, 3, 5 литров соответственно. Поэтому останется 38 литров молока.

ОЦЕН�ВАН�Е:

  • Тесты 4-8: \(N,M \le 1000\)
  • Тесты 9-16: Нет дополнительных ограничений.

Авторы: Chongtian Ma, Alex Liang

п»ї

Фермер Джон расширяет свою ферму! Он определил совершенное место - Красно-Чёрный Лес, который состоит из \(N\) деревьев (\(1 \le N \le 10^5\)) на числовой прямой, где \(i\)-ое дерево находится в позиции \(x_i\) (\(-10^9 \le x_i \le 10^9\)).

Закон по защите окружающей среды ограничивает, какие деревья может спилить ФД, освобождая место под свою ферму. Всего имеется \(K\) ограничений (\(1 \leq K \leq 10^5\)), указывающих, что должно быть как минимум \(t_i\) деревьев на отрезке \([l_i, r_i]\), включая конечные точки (\(-10^9 \le l_i, r_i \le 10^9\)). Гарантируется, что изначально Красно-Чёрный Лес удовлетворяет этим ограничениям.

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

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

Каждый ввод состоит из \(T\) (\(1 \le T \le 10\)) независимых подтестов. Гарантируется, что сумма всех \(N\) и всех \(K\) внутри каждого ввода не превысят \(3 \cdot 10^5\).

Первая строка ввода содержит \(T\). Каждый тест представлен в следующем формате:

  • Первая строка содержит целые числа \(N\) Рё \(K\).
  • Следующая строка содержит \(N\) целых чисел \(x_1, \dots, x_N\).
  • Каждая РёР· последующих \(K\) строк содержит три разделённых одиночными пробелами целых числа: \(l_i\), \(r_i\), \(t_i\).

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

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

ПР�МЕР ВВОДА:

3
7 1
8 4 10 1 2 6 7
2 9 3
7 2
8 4 10 1 2 6 7
2 9 3
1 10 1
7 2
8 4 10 1 2 6 7
2 9 3
1 10 4

ПР�МЕР ВЫВОДА:

4
4
3

Для первого подтеста, ФД может срезать первые 4 дерева, оставив деревья в точках \(x_i = 2, 6, 7\), чтобы удовлетворить ограничениям.

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

Для третьего подтеста, ФД может срезать не более \(3\) деревьев, потому что изначально \(7\) деревьев, однако второе ограничение требует чтобы он оставил как минимум \(4\) дерева не срезанными.

ОЦЕН�ВАН�Е:

  • Тест 2: \(N, K \le 16\)
  • Тесты 3-5: \(N, K \le 1000\)
  • Тесты 6-7: \(t_i = 1\) for all \(i = 1, \dots, N\).
  • Тесты 8-11: Нет дополнительных ограничений.

Авторы: Tina Wang, Jiahe Lu, Benjamin Qi

**Замечание: Время на тест для этой задачи 3 сек, в 1.5 больше чем по умолчанию.**

У Беси есть строка длины \(N\) (\(1\le N\le 3\cdot 10^5\)) состоящая только из символов M и O. Для каждой позиции \(i\) в этой строке есть цена замены (\(1\le c_i\le 10^8\)) этого символа на другой.

Беси думает, что строка будет выглядеть лучше, если она будет содержать больше moo длиной \(L\) (\(1\le L\le \min(N, 3)\)). Moo длиной \(L\) is символ M за которым следуют \(L-1\) символов O.

Для каждого положительного целого \(k\) от \(1\) до \(\lfloor N/L\rfloor\) включительно, вычислите минимальную стоимость изменить строк так, чтобы она содержала как минимум \(k\) подстрок равных moo длины \(L\).

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

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

Следующая строка содержит строку Беси длиной \(N\), состоящую только из символов M и O.

Следующая строка содержит разделённые одиночными пробелами целые числа \(c_1\dots c_N\).

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

Выведите \(\lfloor N/L\rfloor\) строк, ответов для каждого \(k\) в порядке возрастания.

У Беси есть \(N\) (\(1\le N\le 2\cdot 10^5\)) работ для Вас. Если Вы выберете \(i\)-ую работу, её необходимо начать в момент времени \(s_i\) или до него и для её завершения требуется \(t_i\) единиц времени. (\(0\le s_i\le 10^{18}, 1\le t_i\le 10^{18}\)).

Какое максимальное количество работ Вы успеете выполнить? Время начинается с \(0\),и, если Вы начали работу, Вы сначала должны выполнить и только потом начинать другую работу.

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

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

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

Каждая из последующих \(N\) строк содержит два целых числа \(s_i\) и \(t_i\). Строка \(i+1\) содержит описание \(i\)-ой работы.

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

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

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

Фермер Джон заинтересован в лучшем общении со своими собратьями-коровами, поэтому он решил, что он выучит язык мычания!

Язык Moo на самом деле очень похож на английский, но более минималистичный. Там всего четыре типа слов: существительные, переходные глаголы, непереходные глаголы и союзы. Каждые два последовательных слова должны быть разделены пробелом. Там также всего два вида знаков препинания: точки и запятые. Когда точка или запятая ставится после слова, она ставится сразу после слова, а затем с последующим пробелом, если рядом появляется другое слово.

Предложение должно соответствовать одному из следующих форматов:

  • Тип 1: существительное + непереходный глагол.
  • Тип 2: существительное + переходный глагол + существительное(а). В частности, хотя бы одно существительное должен следовать за переходным глаголом, и перед каждым словом должна стоять запятая. следующее существительное, кроме первого следующего существительного.

Два предложения можно соединить в сложносочиненное, если поставить союз между ними. Полученное сложносочиненное предложение не может быть далее объединено с другими предложениями или другими сложными предложениями. Каждое предложение (или составное предложение, если два предложения соединены) должно заканчиваться точкой.

У фермера Джона есть банк слов из \(N\) слов, \(C\) запятых и \(P\) точек. (\(1 \leq P,C\le N \leq 10^3\)). Он может использовать слово или знак препинания столько раз раз, сколько это появляется в банке слова. Помогите ему вывести последовательность предложений, содержащую максимально возможное количество слов.

Каждый входной файл содержит \(T\) (\(1\le T\le 100\)) подтестов.

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

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

Первая строка состоит из трех целых чисел: \(N\), \(C\) и \(P\).

Следующие \(N\) строк будут состоять из двух подстрок, разделённых одиночным пробелом. Первая подстрока будет само слово, которое может использовать FJ (строка не менее 1 и не более 10 строчных букв буквы), а вторая подстрока будет одной из следующих: noun, transitive-verb, intransitive-verb, conjunction, ( соответсвенно существительное, переходный глагол, непереходный глагол или союз) обозначающие тип этого слова. Возможно, одно и то же слово встречается более одного раза в банке слов FJ, но оно всегда будет иметь один и тот же тип при каждом появлении.

ФОРМАТ ВЫВОДА (на терминал / стандартный вывод):

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

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

Грейдер чувствителен к пробелам, поэтому убедитесь, что не выводятся лишние пробелы, особенно в конце каждой строки.

Moo Route#90222

В момент времени \(t=0\) Беси расположена в точке \(x=0\) на бесконечной числовой прямой. Она двигается влево или вправо каждую секунду. Однако после \(T\) секунд Беси возвращается в точку \(x=0\).

Фермер Нхой знает сколько раз Беси пересекала точки \(x=.5, 1.5, 2.5, \ldots, (N-1).5\), и это задаётся числами массива \(A_0,A_1,\dots,A_{N-1}\) (\(1\leq N \leq 10^5\), \(1 \leq A_i \leq 10^6\), \(\sum A_i\le 10^6\)). Беси никогда не попадает ни в \(x>N\) ни в \(x<0\).

В частности, маршрут Беси может быть представлен строкой символов \(T = \sum_{i=0}^{N-1} A_i\) \(L\) и \(R\), где \(i\)-ый символ представляет направление движения Беси во время \(i\)-ой секунды. Количество изменений направления движения определяется как количество \(LR\) плюс количество \(RL\).

Помогите ФН найти любой маршрут Беси, который соответствует массиву \(A\) и имеет минимальное количество изменений направления движения. Гарантируется существование как минимум одного такого маршрута.

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

Первая строка содержит \(N\). Вторая строка содержит \(A_0,A_1,\dots,A_{N-1}\).

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

Выведите строку \(S\) длины \(T = \sum_{i=0}^{N-1} A_i\) где \(S_i\) это \(L\) или \(R\), указывающие направление движения Беси в течение секунды \(i\). Если имеется несколько маршрутов, выводите тот, в котором минимальное количество изменений направления движения. Если таких несколько, выводите любой.

Moo Route#90216

В момент времени \(t=0\), Беси находится в точке \(x=0\) на бесконечной числовой прямой. Она двигается на \(1\) влево или вправо каждую секунду. Ровно через \(T\) секунд она возвращается в точку \(x=0\).

Фермер Нхой знает, сколько раз Беси пересекала точки \(x=.5, 1.5, 2.5, \ldots, (N-1).5\), и это задаётся массивом \(A_0,A_1,\dots,A_{N-1}\) (\(1\leq N \leq 10^5\), \(1 \leq A_i \leq 10^6\)). Беси никогда не достигнет ни \(x>N\), ни \(x<0\).

В частности, маршрут Беси может быть представлен строкой \(T = \sum_{i=0}^{N-1} A_i\) символов \(L\) и \(R\), где \(i\)-ый символ представляет направление, в котором двигалась Беси в течение \(i\)-ой секунды. Количество изменений направления определяется как количество пар символов \(LR\) плюс количество пар символов \(RL\) в этой строке.

Помогите ФН посчитать количество маршрутов, соответствующих массиву \(A\) с минимальным количеством изменений направления движения. Гарантируется существование как минимум одного такого маршрута.

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

Первая строка содержит \(N\). Вторая строка содержит \(A_0,A_1,\dots,A_{N-1}\).

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

Количество маршрутов Беси по модулю \(10^9+7\).

Беси любит смотреть шоу на сервисе Mooloo. Поскольку Беси очень занятая корова, она создаёт план на следующие \(N\) (\(1 \leq N \leq 10^5\)) дней в течение которых будет смотреть шоу. Mooloo - платный сервис и она хочет минимизировать оплату.

У Mooloo интересная система подписки: она стоит \(d + K\) денег (\(1\le K\le 10^9\)), чтобы подписаться на \(d\) последовательных дней. Вы можете начать подписку в любой день. И Вы можете начать новую подписку, если текущая подписка истекла. Определите минимальное количество денег, чтобы заплатить за просмотр шоу.

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

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

Вторая строка содержит \(N\) целых чисел описывающих дни, в которые Беси планирует смотреть шоу: \(1\le d_1<d_2<\dots<d_N\le 10^{14}\).

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

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

Фермер Джон решил потренировать своих коров в акробатике. Сначала он взвесил своих коров и определил, что они имеют \(N\) (\(1\le N\le 2\cdot 10^5\)) различных весов. В частности, для каждой \(i\in [1,N]\), \(a_i\) из его коров имеют вес \(w_i\) (\(1\le a_i\le 10^9, 1\le w_i\le 10^9\)).

Его наиболее популярный трюк включает коров, формирующих сбалансированную башню. Башня это последовательность коров, стоящих одна на другой. Башня называется сбалансированной, если каждая корова с коровой над ней имеет вес не менее чем на (\(1\le K\le 10^9\)) больший, чем вес коровы непосредственно над ней. Каждая корова может быть частью не более чем одной сбалансированной башни.

Если ФД хочет создать не более \(M\) (\(1 \le M \le 10^9\)) сбалансированных башен из своих коров, какое наибольшее количество коров может быть частью некоторой башни?

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

Первая строка содержит три разделённых пробелом целых числа \(N\), \(M\), \(K\).

Следующие \(N\) строк содержат два разделённых пробелом целых числа \(w_{i}\) и \(a_i\). Гарантируется, что все \(w_i\) различны.

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

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

**Замечание: Ограничение по памяти для этой задачи 512MB, в два раза больше значения по умолчанию.**

Беси приняли на новую работу - диспетчером поездов. Имеется две железнодорожные станции \(A\) и \(B\). В связи с ограничением бюджета, эти станции соединены только одной дорогой. Если поезд отправляется от одной станции в момент времени \(t\), тогда он прибудет на другую станцию в момент времени \(t+T\) (\(1\le T\le 10^{12}\)).

Имеется \(N\) (\(1\le N\le 5000\)) поездов для которых нужно установить время отправки. \(i\)-ый поезд должен покинуть станцию \(s_i\) в момент времени $ti или позже (\(s_i\in \{A, B\}, 0\le t_i\le 10^{12}\)). Запрещено иметь поезда, которые движутся в противоположных направлениях в один и тот же момент времени (поскольку они столкнутся). Однако разрешено иметь множество поездов, которые еду в одном направлении в одно и то же время (предполагаем, что поезда имеют пренебрежимо малые размеры)

Помогите Беси спланрировать времена отправления так, чтобы не было столкновений, а общая задержка была минимальной. Если поезд спланирован на убытие в момент времени \(a_i\ge t_i\), общая задержка определяется как \(\sum_{i=1}^N(a_i-t_i)\).

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

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

Затем следуют \(N\) строк, где i-ая строка содержит станции \(s_i\) и время \(t_i\), соответствующие \(i\)-ому поезду.

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

Минимально возможная общая задержка всех корректных планирований.

Фермер Джон вырастил \(N\) (\(1 \leq N \leq 2\cdot 10^5\)) аспарагусов на своей ферме. Однако некоторые из этих растений имеют генетические отличия, поэтому некоторые растения растут быстрее чем другие. Изначальная высота \(i\)-го растения равна \(h_i\) дюймов и после каждого дня \(i\)-ое растение вырастает на \(a_i\) дюймов.

ФД любит некоторые растения больше чем другие, и он хочет, чтобы некоторые растения были выше чем другие. Он дал Вам массив различных целых чисел \(t_1,\dots,t_N\), содержащих все целые числа от \(0\) до \(N-1\) и хочет, чтобы \(i\)-ое растение имело ровно \(t_i\) растений, которые выше этого. Определите минимальное количество дней, чтобы требование ФД было удовлетворено или укажите, что это невозможно.

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

Первая строка состоит из целого числа \(T\), обозначающего количество независимых тестов \((1 \leq T \leq 10)\).

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

Вторая строка состоит из \(N\) целых чисел \(h_i\) \((1 \leq h_i \leq 10^9)\), обозначающих изначальную высоту \(i\)-го растения в дюймах.

Третья строка состоит из \(N\) целых чисел \(a_i\) \((1 \leq a_i \leq 10^9)\), обозначающих количество дюймов, на которые \(i\)-ое растение вырастает каждый день.

Четвёртая строка содержит \(N\) различных целых чисел \(t_i\), обозначающих массив, который ФД даст Вам.

Гарантируется, что сумма всех \(N\) по всем тестам не превысит \(2\cdot 10^5\).

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

Выведите \(T\) строк, ответ на каждый тест на отдельной строке. Если невозможно, выведите -1.

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

Фермер Джон выстроил в ряд свои \(N\) коров (\(1 \leq N \leq 3\cdot 10^5\)). К несчастью, стала распространяться болезнь.

Изначально некоторые коровы инфицированы. Каждую ночь инфицированная корова распространяет болезнь на коров соседних слева и справа, если они есть. Однажды инфицированная корова остаётся инфицированной.

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

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

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

Следующая строка содержит \(N\)-символьную битовую строку из цифр \(1\) и \(0\) где \(1\) представляет инфицированную корову, а \(0\) представляет неинфицированную корову после некоторого количества ночей.

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

Выведите одно целое число: минимальное количество коров, с которых могла стартовать болезнь.

Коровы Фермера Джона любят конфетные трости. У ФД \(N\) коров с определённой начальной высотой. Он хочет скормить им \(M\) конфетных тростей, различной высоты (\(1\le N,M\le 2\cdot 10^5\)).

ФД планирует кормить коров конфетными тростями одну за одной в порядке, в котором они заданы на вводе. Чтобы кормить коров ФД вывешивает конфетные трости так, чтобы изначально они касались земли. Коровы выстраиваются одна за одной в порядке, как они заданы на входе. Каждая ест до своей высоты (потому что выше не достаёт). Трость остаётся на месте где она изначально была подвешена и не опускается к земле, даже после того как её нижняя часть съедена. Возможно, что когда подойдёт очередь некоторой коровы она ничего не сможет съест, если нижняя часть трости уже выше высоты этой коровы. После того как пройдёт очередь всех коров, они подрастают на высоту равную количеству единиц трости, которую съела корова, а ФД вывешивает новую конфетную трость и коровы повторяют процесс опять (корова 1 всегда начинает есть первой).

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

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

Следующая строка содержит начальные высоты \(N\) коров, каждая в интервале \([1,10^9]\).

Следующая строка содержит высоты \(M\) конфетных тростей, каждая в интервале \([1,10^9]\).

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

Финальные высоты каждой из \(N\) коров на отдельной строке.

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

Падают яблоки! В определённые моменты времени некоторое количество яблок падает в некоторые точки числовой прямой. В определённый момент времени некоторые коровы появляются на числовой прямой и НАЧИНАЮТ ловить яблоки.

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

Сколько максимально яблок смогут поймать коровы, если будут действовать сообща оптимально?

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

Первая строка содержит \(N\) (\(1\le N\le 2\cdot 10^5\)), количество раз когда яблоки падали на числовую прямую или там появлялись коровы.

Каждая из последующих \(N\) строк содержит четыре целых числа \(q_i\), \(t_i\), \(x_i\), \(n_i\) (\(q_i\in \{1,2\}, 0\le t_i\le 10^9, 0\le x_i\le 10^9, 1\le n_i\le 10^3\)).

  • Если \(q_i=1\), это значит, что \(n_i\) коров прибыли на числовую прямую в момент времени \(t_i\) в позицию \(x_i\).
  • Если \(q_i=2\), это значит, что \(n_i\) яблок упали на числовую прямую в момент времени \(t_i\) в позицию \(x_i\).

Гарантируется, что все упорядоченные пары \((t_i,x_i)\) различны.

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

Максимальное количество яблок, которое коровы могут поймать сообща.

Фермер Джон пытается сделать совершенную фотографию своих \(N\) коров (\(2 \leq N \leq 2\cdot 10^5\), \(N\) четное).

У ФД есть коровы двух пород Guernseys и Holsteins. Чтобы сделать свою фотографию как можно более эстетичной, он хочет выстроить своих коров так, чтобы как можно больше коров породы Guernseys находились на позициях с чётными номерами (первая позиция в ряду - нечётная, следующая чётная и т.д.). Для перестройки порядка коров он может только попросить "префикс" своих коров четной длины сделать реверс. "Префикс" состоит из диапазона коров от первой коровы до \(j\)-ой коровы для некоторой позиции \(j\).

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

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

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

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

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

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

Корова Беси прячется где-то на числовой прямой. Каждая из \(N\) (\(1\le N\le 1000\)) других коров Фермера Джона имеет информацию, которой она делится с ФД: \(i\)-ая корова говорит, что Беси прячется в некоторой точке меньше либо равной to \(p_i\), или больше либо равной \(p_i\), (\(0\le p_i\le 10^9\)).

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

ФОРМАТ ВВОДА (С КЛАВИАТУРЫ / stdin):

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

Каждая из следующих \(N\) строк содержит символ L или G, за которым следует целое число \(p_i\). L означает, что \(i\)-ая корова говорит, что Беси скрывается в позиции меньше либо равной \(p_i\), а G означает, что \(i\)-ая корова говорит, что Беси скрывается в позиции больше либо равной \(p_i\)

ФОРМАТ ВЫВОДА (на экран / 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++)

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

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

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

Единственный способ Эльзы модифицировать свои записи - объединить два соседних занятия или разъединить одно занятие на два. Например, если \(a=[1,2,3,4,5],\) тогда если Эльза объединит второе и третье занятие, то лог станет \([1,5,4,5]\) Если Эльза выберет разделить третье занятие на два, то лог может стать одним из \([1,5,0,4,5]\), \([1,5,1,3,5]\), \([1,5,2,2,5]\), \([1,5,3,1,5]\), or \([1,5,4,0,5]\).

По заданным \(Q\) (\(1\le Q\le 10^5\)) кандидатам \(q_1,\ldots,q_Q\) для наименее любимых Беси чисел (\(1\le q_i\le 10^{18}\)), для каждого из них помогите Эльзе вычислить минимальное количество модификаций лога, чтобы все числа в нём стали одинаковыми.

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

Первая строка каждого теста содержит \(N\), а вторая содержит \(a_1,a_2,\ldots,a_N\). Третья строка содержит \(Q\) - количество запросов, за которым следует \(Q\) строк с целым числом \(q_i\) - кандидат в наименее любимое число Беси.

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

Для каждого \(q_i\) вычислите минимальное количество модификаций, которое требуется для Эльзы, чтобы конвертировать лог в \(q_i\) или выведите \(-1\), если это невозможно.

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

ФД это заметил и попросил Эльзу вести учёт засыпаний Беси. Всего имеется \(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):

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

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