Темы
    Информатика(2656 задач)
---> 167 задач <---
Источники --> Командные олимпиады --> Командные чемпионаты школьников Санкт-Петербурга по программированию
    1999(5 задач)
    2000(7 задач)
    2001(8 задач)
    2002(8 задач)
    2003(9 задач)
    2004(9 задач)
    2005(10 задач)
    2006(10 задач)
    2007(10 задач)
    2008(9 задач)
    2009(10 задач)
    2010(10 задач)
    2011(9 задач)
    2012(10 задач)
    2013(10 задач)
    2014(11 задач)
    2015(11 задач)
    2016(11 задач)
Страница: << 18 19 20 21 22 23 24 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Джон — фанат сериала «Во все престолы». Совсем скоро выходит новый сезон, и Джон хочет его посмотреть.

Серии будут выходить по одной в день. Джону не хочется скачивать их каждый раз вручную, поэтому он собирается написать программу, которая будет делать это за него. Каждая серия — это отдельный файл, размер файла, содержащего \(i\)-ю серию, равен \(s_i\) байт.

Программа Джона будет действовать следующим образом. Она один за другим будет отправлять на сервер запросы, где \(j\)-й запрос представляет собой «загрузить очередные \(x_j\) байт». В ответ на такой запрос сервер возвращает пакет данных, содержащий очередные \(x_j\) байт файла, а также заголовок, содержащий \(k\) байт различной служебной информации. Таким образом, размер пакета равен \(x_j + k\) байт, при этом значение \(k\) одно и то же для всех запросов.

Когда в результате некоторого запроса скачивается последний байт файла, программа завершает свою работу и не делает дальнейших запросов к серверу. Однако протокол устроен таким образом, что размер пакета равен \(x_j + k\), даже если был достигнут конец файла и в действительности было загружено меньше \(x_j\) байт полезной информации.

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

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

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

В первой строке входного файла заданы целые числа \(n\) и \(k\) — количество серий и размер заголовка пакета (\(1 \le n \le 10000; 0 \le k \le 10^9\) ). Во второй строке задано n целых чисел \(s_i\) — размеры серий (\(1 \le s_i \le 10^9\) ).

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

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

Замечание

В первом примере можно сначала загрузить 200 байт, а затем 600. Тогда первые три серии будут скачаны после первого запроса и на каждую из них будет потрачено по 200 + 1000 = 1200 байт. Последняя серия будет скачана за два запроса, на нее будет потрачено (200+1000)+(600+1000) = 2800 байт. Итого 1200 + 1200 + 1200 + 2800 = 6400 байт.

Во втором примере заголовка нет, поэтому можно не бояться делать много запросов. Например, можно загружать блоками по 100 байт.

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Никита очень любит математические парадоксы. Недавно он заметил, что

\(\)\frac{2}{3} < \frac{1}{1}; \frac{1}{2} < \frac{6}{11},\(\) но при этом если у меньших дробей сложить числители и знаменатели и то же сделать с большими дробями, то получатся дроби

\(\)\frac{2+1}{3+2} = \frac{3}{5}; \frac{1+6}{1+11} = \frac{7}{12},\(\) причем \(\)\frac{3}{5} > \frac{7}{12}.\(\) Тогда Никита выписал в ряд \(k\) дробей и хочет выбрать среди них четыре дроби, чтобы выполнялись неравенства \(\)\frac{m_1}{n_1} \le \frac{m_2}{n_2}; \frac{m_3}{n_3} \le \frac{m_4}{n_4},\(\) а величина \(\)\frac{m_1 + m_3}{n_1 + n_3} - \frac{m_2 + m_4}{n_2 + n_4}\(\) была максимальна. Каждую из записанных дробей можно взять только в качестве одной из выбранных четырех. Помогите Никите решить эту сложную задачу.

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

Первая строка ввода содержит число \(k\) — количество дробей, выписанных Никитой (\(4 \le k \le 2000\)).

Следующие \(k\) строк содержат по два положительных целых числа: для каждой дроби задан ее числитель и знаменатель. Все заданные дроби являются несократимыми. Числитель и знаменатель каждой дроби не превышают 10 000.

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

Выведите четыре различных целых числа: номера дробей, которые следует выбрать в качестве \(\frac{m_1}{n_1}, \frac{m_2}{n_2}, \frac{m_3}{n_3}, \frac{m_4}{n_4}\), соответственно. Дроби пронумерованы от \(1\) до \(n\) в том порядке, в котором они заданы во вводе. Если возможных оптимальных решений несколько, разрешается выдать любое из них.

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

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

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

Помогите Диме решить головоломку оптимальным образом.

Например, если у Димы есть фигура и препятствие, показанные на рисунке ниже, выгоднее всего уронить фигуру следующим образом:

В этом случае количество очков, набранных Димой, будет равно 4.

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

В первой строке ввода содержатся два числа \(n_f\) и \(m_f\) — размеры фигуры (\(1 \le n_f , m_f \le 300\)). В каждой из следующих \(n_f\) строк содержатся по \(m_f\) символов — описание фигуры, «*» означает квадрат, принадлежащий фигуре, «.» — пустой квадрат.

В следующей строке содержатся два числа \(n_o\) и \(m_o\) — размеры препятствия (\(1 \le n_o, m_o \le 300\)). В каждой из следующих \(n_o\) строк содержатся по \(m_o\) символов — описание препятствия, «#» означает квадрат, принадлежащий препятствию, «.» — пустой квадрат.

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

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

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

Замечание

В тестовом примере оптимальный способ уронить фигуру показан на рисунке в условии

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

В Байтландии решили провести шоу «Кто хочет стать миллионером?». Участнику шоу по очереди задаются \(n\) вопросов, если он ответил на \(i\)-й вопрос, его приз становится равным \(a_i\) . После любого вопроса участник шоу может забрать свой приз и покинуть шоу.

Организаторы шоу решили, что число вопросов будет равно \(n\), но не могут определиться с призами. Первый вопрос обычно очень простой и за него решено было установить приз равный \(a_1 = 100\) битов. Каждый следующий вопрос сложнее, поэтому очередной приз должен быть хотя бы вдвое больше предыдущего. Наконец, призы должны быть достаточно круглыми.

Организаторы называют сумму достаточно круглой, если нули в конце этой суммы составляют хотя бы половину цифр в записи этой суммы. Они решили, что в качестве приза \(a_i\) для всех \(i > 1\) они выберут минимальное достаточно круглое число, хотя бы в 2 раза большее \(a_{i−1}\). Помогите организаторам понять, чему будут равны призы.

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

На ввод подается одно число \(n\) (\(1 \le n \le 25\)).

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

Выведите \(n\) чисел по одному на строке — призы, которые будут установлены организаторами шоу.

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Больше всего Генерал Петров любит строевую подготовку. Однажды в построении участвовало \(n\) солдат, для простоты пронумерованных от 1 до \(n\). Солдаты выстроились в ряд, при этом на месте \(i\) стоял солдат с номером \(a_i\) . После этого адъютант генерала прошёл вдоль строя и проверил, что перестановка в точности совпадает с придуманной генералом.

Некоторое время спустя генерал захотел снова расставить солдат в том же порядке. Однако он забыл, как именно он расставил солдат в тот раз. К счастью, у адъютанта генерала хорошая память — про \(m\) пар позиций \(x_i , y_i\) он помнит, что номер солдата, стоявшего на месте \(x_i\) , меньше номера солдата, стоявшего на месте \(y_i\) .

Адъютант стал по очереди сообщать генералу пары \(x_i , y_i\) . Но генерал хочет побыстрее начать строить солдат. Помогите ему определить такое минимальное \(k\), что как только адъютант сообщит ему первые \(k пар позиций, генерал сможет однозначно определить искомую перестановку.

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

В первой строке находятся два целых числа \)n\( и \)m\( — количество солдат, участвовавших в операции, и количество пар позиций, которые запомнил адъютант (\)2 \le n \le 10^5 ; 1 \le m \le 10^5\( ).

В следующих \)m\( строках даны пары, которые помнит адъютант, в том порядке, в котором сообщает их генералу. Каждая строка содержит по два числа \)x_i\( и \)y_i\( , которые означают, что номер солдата на позиции \)x_i\( был меньше номера солдата на позиции \)y_i\( (\)1 \le x_i , y_i \le n; x_i \ne y_i\().

Гарантируется, что каждая пара \)x_i\( , \)y_i\( встречается во входном файле не более одного раза. Гарантируется, что входные данные корректные, то есть существует хотя бы одна перестановка, для которой выполняются все условия, которые помнит адъютант.

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

Выведите одно число \)k$ — минимальный номер пары позиций, после произнесения которой можно однозначно восстановить перестановку. Если входные данные таковы, что перестановку однозначно восстановить не удастся, выведите −1.

Замечание

В первом примере солдаты стояли в порядке (5, 2, 1, 3, 4). Уже после четвёртой пары чисел, запомненной адъютантом, можно восстановить этот порядок.

Во втором примере существует четыре варианта расстановки солдат, удовлетворяющих входным данным: (1, 3, 4, 2), (2, 3, 4, 1), (3, 2, 4, 1) и (4, 2, 3, 1).


Страница: << 18 19 20 21 22 23 24 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест