Информатика

7 592 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Фермер Джон выстроил \(N\) своих коров в ряд, чтобы сделать фото (\(1 \leq N \leq 50\)). Высота \(i\)-ой коровы в этом ряду есть \(a(i)\), и ФД думает, фото будет эстетически приятным, если будет иметь большую возрастающую по росту коров подпоследовательность.

Напомним, подпоследовательность это подмножество \(a(i_1), a(i_2), \ldots, a(i_k)\) элементов из последовательности, где индексы \(i_1 < i_2 < \ldots < i_k\). Мы говорим, что подпоследовательность возрастающая, если \(a(i_1) \leq a(i_2) \leq \ldots \leq a(i_k)\).

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

Например, если мы имееем список

1 6 2 3 4 3 5 3 4

мы можем реверсировать следующие элементы

1 6 2 3 4 3 5 3 4
  ^         ^ ^ ^

получим

1 4 2 3 4 3 3 5 6
  ^         ^ ^ ^

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

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

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

Первая строка ввода содержит числа \(N\). Остальные \(N\) строк содержат \(a(1) \ldots a(N)\), целые числа в интервале \(1 \ldots 50\).

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

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

Коровы, последовательно пронумерованные \(1 \ldots N\) (\(1 \leq N \leq 100,000\)), организовали компанию в виде дерева, где корова 1 - президент (корень дерева). Каждая корова, кроме президента, имеет ровно одного менеджера (её родитель в дереве). Каждая корова \(i\) имеет различный професиональный рейтинг \(p(i)\), который описывает насколько хорошо она делает свою работу. Если корова \(i\) есть менеджер коровы \(j\), то мы говорим, что корова \(j\) подчиняется корове \(i\).

К несчастью коровы обнаружили что часто бывает так, что менеджер имеет меньший уровень профессиональности, чем некоторые из его подчинённых. В этом случае менеджер должен рассмотреть продвижение этих подчинённых. Ваша задача - помочь коровам узнать, когда это случается. Для каждой коровы \(i\) в компании вычислите количество подчинённых \(j\) таких, что \(p(j) > p(i)\).

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

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

Следующие \(N\) строк ввода содержат рейтинги профессиональности коров \(p(1) \ldots p(N)\). Все числа - различные целые в интервале \(1 \ldots 1,000,000,000\).

Следующие \(N-1\) строк описывают менеджера (родителя) для коров \(2 \ldots N\). Напомним что у коровы 1 нет менеджера, поскольку она президент.

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

Выведите \(N\) строк. \(i\)-ая строка вывода должна говорить количество подчинённых коровы \(i\) с рейтингом профессиональности большим чем у коровы \(i\).

Фермер Джон строит новый \(N\)-этажный амбар с помощью своих \(K\) коров (\(1 \leq N \leq K \leq 10^{12}\) и \(N \leq 10^5\)). Чтобы сделать работу быстрее ему нужно оптимально распределить работу между коровами.

Каждая корова должна быть назначена на работу ровно на один этаж. И на каждый этаж должна быть назначена хотя бы одна корова. \(i\)-ый этаж требует выполнения \(a_i\) единиц работы , каждая корова завершает одну единицу работы ровно за час. Поэтому если \(c\) коров работают на этаже \(i\), то они выполнят всю работу ровно за \(a_i / c\) единиц времени. Из соображений безопасности, этаж \(i\) должен быть завершён прежде чем начнётся работа на этаже \(i+1\).

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

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

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

Следующие \(N\) строк содержат \(a_1 \ldots a_N\), каждое - положительное целое не более чем \(10^{12}\).

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

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

Возможно Вы слышали об игре "Камень, Бумага, Ножницы". Коровы любят играть в похожую игру "Копыто, Бумага, Ножницы" Правила игры "Копыто, Бумага, Ножницы" просты. Две коровы играют друг против друга. Они обе считают до трёх, а затем одновременно делают жест, представляющий копыто, бумагу или ножницы. Копыто выигрывает у ножниц, ножницы выигрывают у бумаги, бумага выигрывает у копыта. Конечно может быть и ничья, если обе коровы сделали один и тот же жест.

Фермер Джон хочет сыграть с Бесси \(N\) раз (\(1 \leq N \leq 100,000\)). Бесси будучи экспертом в этой игре может предсказать каждый из жестов ФД. Но как корова, она очень ленива. Поэтому она хочет играть одним и тем же жестом много раз подряд. В действительности, она хочет переключаться между жестами не более чем \(K\) (\(0 \leq K \leq 20\)) раз за все игры. Например, если \(K=2\), она может играть "копыто" первые игры, затем переключиться на бумагу и в конце играть снова "копыто".

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

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

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

Оставшиеся \(N\) строк содержат жесты ФД, каждый H, P или S.

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

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

Амбар описывается решёткой \(N \times N\) (\(2 \leq N \leq 20\)) символов, некоторые из них пусты, некоторые заняты. Бесси начинает в левом нижнем углу (1,1) и должна пройти в правый верхний угол \(N,N\). Вы можете управлять ею посредством последовательности инструкций вида "вперёд", "повернись влево на 90 градусов", "повернись вправо на 90 градусов". Вы хотите задать кратчайшую последовательность, которая приведёт ее к цели. Есл инструкицю выполнить невозможно, Бесси пропускает её и переходит к следующей инструкции.

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

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

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

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

Каждый символ или H (непроходимы стог сена) или E - пустая ячейка.

Гарантируется, что ячейки 1,1 и \(N,N\) будут пустые, также гарантируется существование пути по пустым ячейкам из 1,1 в \(N, N\).

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

На единственной выводной строке выведите длину кратчайшей последовательности команд, которая приведёт Бесси к цели, вне зависимости куда она смотри вначале, вверх или вправо.

ФОРМАТ ВВОДА:

3
EHE
EEE
EEE

ФОРМАТ ВЫВОДА:

9

В этом примере Инструкции "Вперёд, Вправо, Вперёд, Вперёд, Влево, Вперёд, Влево, Вперёд, Вперёд" приведут Бесси к назначению вне зависимости от начальной ориентации.

Problem credits: Brian Dean

Фермер Джон выстроил свои \(N\) коров в ряд, чтобы сделать фото. (\(1 \leq N \leq 100,000\)). Высота \(i\)-ой коровы в этой последовательности равна \(h_i\), и все эти высоты различны.

ФД хочет, чтобы фотография получилась красивее. Он считает, что корова \(i\) выглядит несбалансированно, если \(L_i\) и \(R_i\) отличаются более чем в 2 раза. Здесь \(L_i\) и \(R_i\) - количества коров, которые выше чем корова \(i\), слева и справа соответственно. То есть, корова \(i\) является несбалансированной, если большее из чисел \(L_i\) и \(R_i\) строго более чем в 2 раза больше, чем меньшее из этих двух чисел.

Вычислите сколько всего есть несбалансированных коров.

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

Первая строка ввода содержит число \(N\). Следующие \(N\) строк содержат \(h_1 \ldots h_N\), каждое неотрицательное целое не более чем 1,000,000,000.

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

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

Возможно Вы слышали об игре "Камень, Бумага, Ножницы". Коровы любят играть в похожую игру "Копыто, Бумага, Ножницы"

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

Фермер Джон наблюдает как две коровы играют серию из \(N\) игр (\(1 \leq N \leq 100\)). К несчастью, ФД видя три различных жеста, не понимает, какой из них означает копыто, какой бумагу, какой ножницы.

ФД назначил жестам цифры 1 2 3. Помогите ФД определить максимально возможное количество игр, в которых выиграет первая корова, при подходящем назначении цифр жестам.

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

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

Каждая из последующих \(N\) строк содержит два целых числа (1,2,3) описывающих игру.

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

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

У Фермера Джона есть 7 молочных коров: Bessie, Elsie, Daisy, Gertie, Annabelle, Maggie, Henrietta. Он доит их каждый день и хранит детальный протокол количества молока, которая дала каждая корова во время каждой дойки. Не удивительно, что ФД поощряет коров, которые дают больше молока.

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

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

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

Каждая из \(N\) последующих строк содержит имя коровы (одно из 7 указанных выше), за которым следует положиельное число (не более 100), указывающее количество молока, которое произвела корова во время очережной дойки.

Любая корова, которая не появилась протоколе - не произвела молока вообще.

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

В единственной строке вывода выведите имя коровы, которая произвела второе по минимальности количество молока. Более точно, если \(M\) минимальное количество молока из всех произведённых коровами, выведите имя коровы, которая произвела минимальное колчиество млока, большее чем \(M\). Если несколько коров произвели такое количество молока или нет аких коров (т.е. все произвели по \(M\) молока), выведите слово "Tie". Не забудьте добавить символ перевода строки в своему выводу. Заметим, что \(M=0\) если одна из коров полностью отсутствует в протоколе дойки.

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

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

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

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

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

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

Каждая из последующих строк содержит строку из \(N\) (0 - не опрокинутая корова, 1 - опрокинутая корова).

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

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

\(N\) коров Фермера Джона выстроены в ряд. Каждая корова помечена различным целым числом - идентификатором. ФД хочет сделать фото непрерывной группы коров, но он делает фотографию группы коров, только если сумма их идентификаторов делится на 7.

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

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

Первая строка ввода содержит \(N\) (\(1 \leq N \leq 50,000\)). Каждая из следующих \(N\) строк содержит идентификатор коровы (все в интервале \(0 \ldots 1,000,000\)).

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

Выведите количество коров в наибольшей непрерывной группе коров, такой что сумма их идентификаторов делится на 7. Если такой группы нет, выведите 0.

Сумма может не поместится в 32-битное целое, Вы можете использовать 64-битное целое ("long long" в C/C++).

Фермер Джон косит траву. Он перемещает комбайн один раз в день. В день 1 он начинает в позиции \((x_1, y_1)\) и в день \(d\) перемещается по прямой в позицию \((x_d, y_d)\), двигаясь или горизонтально или вертикально по 2D-карте своей фермы. То есть либо \(x_d = x_{d-1}\), либо \(y_d = y_{d-1}\). ФД чередует в последовательные дни горизонтальные и вертикальные участки. Он косит довольно медленно, поэтому может такое случится, что когда он вернётся в позицию, там уже снова вырастет трава. Точнее, если в какой-то ячейке трава была скошена в день \(d\), то она повторно вырастет в день \(d + T\), поэтому если ФД попал в какую-то ячейку, в которой уже был не менее, чем \(T\) днями раньше, то ему придётся снова косить там траву. ФД хочет посчитать, сколько раз такое случится.

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

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

Первая строка ввода содержит \(N\) (\(2 \leq N \leq 100,000\)) и \(T\) (\(1 \leq T \leq N\), \(T\) even). Следующие \(N\) строк описывают позицию комбайна в дни \(1 \ldots N\). i-ая из этих строк содержит целые числа \(x_i\) \(y_i\) (неотрицательные целые не более 1,000,000,000).

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

Выведите количество точек пересечения, описанных выше.

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

Фермер Джон начинает в позиции (\(f_x, f_y\)) и планирует сделать \(N\) шагов, каждый из которых в одном из 4 направлений: 'N' (север), 'E' (восток), 'S'(юг), 'W' запад. Беси начинает в позиции (\(b_x, b_y\)) и делает аналогичные \(M\) шагов. Эти пути могут иметь общие точки. В каждый момент времени ФД может остаться в своей текущей позиции либо сделать один шаг вперёд по своему маршруту (если ещё не достиг финальной позиции). В каждый момент времени (исключая тот момент, когда они находятся в стартовой позиции), энергия, потреблённая их радиоустройствами равна квадрату расстояния между ними.

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

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

Первая строка ввода содержит \(N\) и \(M\) (\(1 \leq N, M \leq 1000\)). Вторая строка содержит целые числа \(f_x\) и \(f_y\), третья строка содержит \(b_x\) и \(b_y\) (\(0 \leq f_x, f_y, b_x, b_y \leq 1000\)). Следующая строка содержит строку длины \(N\), описывающая путь ФД, и последняя строка содержит строку длины \(M\), описывающая путь Беси.

Гарантируется, что координаты ФД и Беси всегда в интервале (\(0 \leq x,y \leq 1000\)) на протяжении всего маршрута. Заметим, что Восток - это положительное направление по оси Х, а Север - положительное направление по оси Y.

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

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

Беси придумала игру. Игрок бросает корову на одномерную сцену, состоящую из множества стогов сена, расположенных в различных точках числовой прямой. После приземления коровы может возникнуть цепная реакция взрывов. Цель - используя одну корову, начать цепную реакцию так, чтобы взорвать все стоги сена.

Имеется \(N\) стогов сена, расположенных в различных целочисленных позициях \(x_1, x_2, \ldots, x_N\) на числовой прямой. Если корова приземлится с энергией \(R\) в позиции \(x\), это вызовет взрыв "радиусом \(R\)", что вызовет взрывы всех стогов сена в диапазоне \(x-R \ldots x+R\). Все стоги сена в этом диапазоне также одновременно взрываются с радиусом взрыва \(R-1\). Все ещё не взорванные стоги сена, попавшие в этот диапазон, снова взрываются уже с радиусом взрыва \(R-2\), и т.д.

Пожалуйста, определите минимальное количество энергии \(R\), с которым должна приземлиться корова, так что если она приземлится в оптимальном положении, то взорвутся все стоги сена на сцене.

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

Первая строка ввода содержит \(N\) (\(2 \leq N \leq 50,000\)). Оставшиеся \(N\) строк содержат целые числа \(x_1 \ldots x_N\) (каждое в диапазоне \(0 \ldots 1,000,000,000\)).

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

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

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

Недавно ФД ввёл в контест 4 дивизиона сложности: Bronze, Silver, Gold, Platinum. Все новые участники начинают в дивизионе Bronze, как только они показывают на контесте совершенный результат, они переводятся в следующий дивизион. Возможно даже, что участник переводится несколько раз в течение одного контеста. ФД хранит список всех участников и их текущий дивизион. Поэтому каждый начинает со своего дивизиона в любой момент контеста.

Когда ФД публикует результаты последнего контеста, он хочет включить информацию по количествам переведенных из Bronze в Silver, из Silver в Gold, из Gold в Platinum. Однако он затрудняется считать перемещения, если они происходят в течение одного контеста. Беси поняла, что ФД может выводить количество случившихся перемещений непосредственно из количества участников в каждом уровне до и после контеста. Помогите ей выполнить эти вычисления.

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

Ввод состоит из 4 строк, каждая содержит два числа в интервале 0..1,000,000. Первая строка указывает количество участников в дивизионе Bronze до и после контеста. Вторая строка указывает количество участников в дивизионе Silver до и после контеста. Третья строка указывает количество участников в дивизионе Gold до и после контеста. Четвёртая строка указывает количество участников в дивизионе Platinum до и после контеста.

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

Пожалуйста, выведите три строки, каждая содержит одно целое число. Первая строка должна содержать количество участников, которые были перемещены из Bronze в Silver. Вторая строк должна содержать количество участников, которые были перемещены из Silver в Gold. Последняя строка должна содержать количество участников, которые были перемещены из Gold в platinum.

Фермер Джон косит траву.

Ферма представлена двумерной решёткой квадратных ячеек. AL начинает одной из этих ячеек в момент времени \(t = 0\), косит траву в этой ячейке. Поэтому изначально трава выкошена только в этой ячейке. Дальнейшие действия ФД описываются последовательностью из \(N\) предложений. Например, если первое предложение "W 10" то для моментов времени от \(t = 1\) до \(t = 10\) (то есть, следующие 10 единиц времени), ФД будет продвигаться по 1 ячейке на запад, кося траву в каждой ячейке по пути.

ФД медленно косит траву настолько, что она может успеть вырасти ещё прежде чем он закончит процесс. Любая ячейка травы, которую выкосили в момент времени \(t\) вырастет снова в момент времени \(t + x\).

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

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

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

Первая строка ввода содержит \(N\) (\(1 \leq N \leq 100\)). Каждая из оставшихся \(N\) строк содержит одно предложение вида 'D S', где D это символ направления, (N=север, E=восток, S=юг, W=запад), а S - количество шагов, выполненных в этом направлении (\(1 \leq S \leq 10\)).

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

Пожалуйста, определите максимальное значение \(x\) такое, что ФД никогда не ступит на ячейку, где трава ещё не выросла. Если ФД никогда не заходит в ячейку повторно, выведите -1.

Беси придумала новую игру: Игрок стреляет коровой по одномерной сцене состоящей из множества стогов с сеном расположенных в различных точках на числовой прямой. Корова приземляется на стог с силой достаточной чтобы взорвать стог, что вызовет цепную реакцию взрывов близлежащих стогов. Цель игры - использовать одну корову в начале игры так, чтобы сдетонировало как можно больше стогов.

\(N\) стогов сена расположены в различных целочисленных позициях \(x_1, x_2, \ldots, x_N\) на числовой прямой. Если корова приземлилась в позицию \(x\), этот стог взрывается с радиусом взрыва 1, что означает, что стоги сена, которые находятся на расстоянии 1 от этого стога, тоже взрываются - одновременно, но уже с радиусом взрыва, равным 2. На следующем шагу взрываются все в радиусе взрыва, но новые взрывы будут уже с радиусом 3. В общем случае, в момент времени \(t\) взрывается некоторое количество коров и каждый взрыв имеет радиус \(t\). Эти взрывы инициируют взрывы коров попавших в зону поражения в момент времени \(t+1\) с радиусами взрывов \(t+1\) и т.д

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

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

Первая строка ввода содержит \(N\) (\(1 \leq N \leq 100\)). Оставшиеся \(N\) строк все содержат целые числа \(x_1 \ldots x_N\) (каждое в диапазоне \(0 \ldots 1,000,000,000\)).)

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

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

Stampede#90377

Problem 1: Stampede [Brian Dean]

N коров (1 <= N <= 50,000) Фермера Джона стоят вдоль дороги перед
фермой – предстоит забег, чтобы узнать какая корова самая быстрая.

Каждая корова представлена горизонтальным отрезком одиночной длины,
с началом в левой угловой точке в момент времени t=0. Например,
(-3,6) обозначает корову, которая в момент времени 0 представлена отрезком
из (-3,6) в (-2,6). Каждая корова движется вправо (в направлении + по оси x),
на некоторой скорости указанной количеством времени, требуемым для того,
чтобы переместиться на единицу расстояния вправо.

ФД для того, чтобы определить, какие из его коров участвуют в гонке,
расположился в точке (0,0) и смотрит в направлении +y.
ФД видит только ближайшую к себе корову. То есть корова может быть
не видима, если другая корова находится «перед ней» всё время пока
пересекает «линию взгляда» ФД.

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

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

Первая строка ввода содержит N. Каждая из последующих N строк
описывает одну корову тремя целыми числами x y r, определяющими
левую точку коровы (x,y) в момент времени t=0 и постоянную скорость
её движения право – r, то есть что эта корова перемещается на 1
единицу расстояния за r единиц времени. X находится в диапазоне -1000..1,
а y находится в диапазоне 1..1,000,000 (и различается для каждой коровы,
чтобы предотвратить коллизии), и значение r находится в диапазоне 1..1,000,000.

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

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

Примечание
ФД сможет увидеть коров 1 и 2 и не сможет увидеть корову 3.

Беси пошла компьютерные курсы и восхищена темой «Системы
счисления». Напомним, что число, записанное в системе счисления
B имеет цифровые места, представляющие 1, B, B^2, B^3 … справа
налево. Например, для 10-ой системы счисления мы имеем цифры,
представляющие 1, 10, 100, 1000, … Последовательность цифр 1234
в 10-й системе означает
1(1000) + 2(100) + 3(10) + 4(1).
Та же последовательность в 5-ой системе означает
1(125) + 2(25) + 3(5) + 4(1)
И даёт число 194 в 10-й системе.
Беси заметила, что если основание системы счисления B возрастает,
возрастает и число, им представляемое. Например, 1234 в 7-ой системе
счисления представляет большее число, чем 1234 в 6-ой системе
счисления.

Когда мы записываем число в системе счисления с основанием B,
каждая цифра может быт в диапазоне от 0 до B-1. Поэтому, например,
в 10-й систем счисления, цифры находятся в диапазоне 0..9,
а в 5-ой систем счисления, цифры находятся в диапазоне 0..4.

Можно рассматривать системы счисления с основанием больше чем 10.
Например, компьютерные специалисты часто используют в качестве
основания системы счисления основание 16, и используют буквы A..F
для обозначения величин 10..15. Например, BEEF в 16-ой системе соответствует
11(4096) +14(256) + 14(16) + 15,
что после сложения даёт 48879 в 10-ой системе счисления.
Беси заинтригована концепцией использования оснований больше 10.
Она берёт число N и выписывает его в двух различных системах счисления X и Y,
каждое из которых в диапазоне 10..15,000. Интересно, что в обоих случаях
она получает последовательность из 3 цифр, каждое из которых в диапазоне 1..9.
К сожалению, из-за плохой памяти Беси забыла N X Y. Пожалуйста, помогите
ей по двум 3-цифровым последовательностям, которые она выписала,
определить системы счисления X и Y, которые она использовала.
Заметим, что программа, которая просто будет перебирать все возможные
сочетания X и Y (примерно 15,000^2 вариантов) не пройдёт по времени,
и не получит полный балл.

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

Входной файл начинается с целого числа K, затем оно содержит K строк,
каждая из которых отдельный тест. Каждый тест состоит из двух
3-значных чисел. Первое - число N, записанное в системе счисления с
основанием X, второе - число N, записанное в системе счисления с
основанием Y. N X Y могут различаться для каждого теста.

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

Ваш вывод должен содержать K строк, по одной для каждого теста.
На каждой строке выведите два числа X и Y для соответствующего теста,
разделённые одиночными пробелами. Гарантируется существование и
единственность решения.

Примечание
Число 8892, записанное в системе счисления с основанием 47 есть 419,
и это же число, записанное в системе счисления с основанием 35 есть 792.

Устав от холодной зимы Беси планирует слетать куда потеплее на каникулах.
К несчастью, только одна кампания Air Bovinia продаёт билеты коровам.

Air Bovinia имеет N самолётов (1 <= N <= 500), каждый из которых
летает по собственному маршруту, состоящему из
двух или более городов. Например, такому: маршрут
начинается в городе 1, затем самолёт летит в город 5,
затем в город 2, затем в город 8. Никакой город не появляется
в этом маршруте дважды и более раз. Если Беси
выбрала маршрут, то она может сесть на него в любом городе
этого маршрута и сойти также в любом городе этого маршрута.
Она не обязана садиться в самолёт в первом городе маршрута
и выходить в последнем. Каждый маршрут имеет определённую цену,
которую Беси должна заплатить, если она использует
любую часть маршрута, не зависящую от количества городов,
которые она посетит во время маршрута.

Беси хочет найти самый дешёвый способ пропутешествовать от её фермы
(город A) до её "тёплого местечка" (город B).
При этом она хочет использовать только один маршрут,
чтобы не мучиться с пересадками.
Помогите ей определить минимальную цену, которую ей придётся заплатить.

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

Первая строка содержит числа A,B,N разделённые одиночными пробелами.

Следующие 2N строк описывают доступные маршруты - по две строки на маршрут.

Первая строка содержит цену этого маршрута (целое число от 1 до 1000)
и количество городов, вдоль этого маршрута (целое число от 1 до 500).

Вторая строка содержит список городов в порядке посещения вдоль этого
маршрута. Каждый город идентифицируется целым числом от 1 до 10,000.

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

Выведите минимальную стоимость одного маршрута, который Беси
может использовать для перемещения из города A в город B.
Если такого маршрута нет, выведите -1.

Примечание

Хотя имеется более дешёвый решение из двух маршрутов (маршрут 2
из города 1 в город 3, затем маршрут 1 из города 3 в город 2),
Беси выбирает только прямой маршрут
- маршрут 3, цена которого равна 8.

Moocast#90367
\(N\) (\(1 \leq N \leq 200\)) коров Фермера Джона хотят организовать безопасную сеть передачи сообщений.

Каждая корова получает "воки-токи". Каждый "воки-токи" имеет ограниченный радиус передачи: "воки-токи" с мощностью \(P\) может передавать сигнал на расстояние не более \(P\). Заметим, что "воки-токи" однонаправленный: чтобы получить сигнал от другого "воки-токи", нужно чтобы он имел соотвествующую мощность.К счастью, коровы могут передавать по эстафете сообщения другу другу (в том числе и чужие) и поэтому нет необходимости для каждой коровы быть способной непосредственно передать сообщение каждой другой.

В связи с ассиметрической природой передаси сигналов "воки-токи" передача от одних коров может быть более эффективной, чем передача от других коров по способности достичь большего количества реципиентов (принимая во внимание эстафетную передачу). Определите максимальное количество коров, которым можно передать информацию от одной коровы.

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

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

Каждая из следующих \(N\) строк содержат \(x\) и \(y\) координаты одной коровы ( целые числа в диапазоне \(0 \ldots 25,000\)) за которыми следует \(p\), мощность "воки-токи" этой коровы.

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

Напишите одну строку - максимальное количество коров, которым можно передать информацию от одной коровы.

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