|
ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
|
Занятие:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Версия для печати
Убрать все задачи
В витрине ювелирного магазина стоит манекен, на шею которого надето ожерелье. Оно состоит из N колечек, нанизанных на замкнутую нить. Все колечки имеют разные размеры. В зависимости от размера колечки пронумерованы числами от 1 до N, начиная с самого маленького и до самого большого. Колечки можно передвигать вдоль нити и протаскивать одно через другое, но только в том случае, если номера этих колечек отличаются более чем на единицу. Продавец хочет упорядочить колечки так, чтобы они располагались по возрастанию номеров вдоль нити по часовой стрелке. Снимать ожерелье с манекена нельзя. Требуется написать программу, которая по заданному начальному расположению колечек находит последовательность протаскиваний колечек одно через другое, приводящую исходное расположение колечек в желаемое. Формат входных данных В первой строке входного файла записано число N (2 ≤ N ≤ 50). Во второй строке через пробел следуют N различных чисел от 1 до N - номера колечек, расположенных вдоль нити по часовой стрелке. Формат выходных данных Выходной файл должен содержать описание процесса упорядочения. В каждой строке, кроме последней, должны быть записаны через пробел два числа, указывающие номера колечек, протаскиваемых друг через друга. В последней строке должен стоять ноль. Количество строк выходного файла не должно превышать 50000. Если требуемого упорядочения колечек достичь не удается, в выходной файл нужно вывести одно число √1. Пример
Пете поручили написать менеджер памяти для новой стандартной библиотеки языка H++. В распоряжении у менеджера находится массив из N последовательных ячеек памяти, пронумерованных от 1 до N. Задача менеджера - обрабатывать запросы приложений на выделение и освобождение памяти. Запрос на выделение памяти имеет один параметр K. Такой запрос означает, что приложение просит выделить ему K последовательных ячеек памяти. Если в распоряжении менеджера есть хотя бы один свободный блок из K последовательных ячеек, то он обязан в ответ на запрос выделить такой блок. При этом непосредственно перед самой первой ячейкой памяти выделяемого блока не должно располагаться свободной ячейки памяти. После этого выделенные ячейки становятся занятыми и не могут быть использованы для выделения памяти, пока не будут освобождены. Если блока из K последовательных свободных ячеек нет, то запрос отклоняется. Запрос на освобождение памяти имеет один параметр T. Такой запрос означает, что менеджер должен освободить память, выделенную ранее при обработке запроса с порядковым номером T. Запросы нумеруются, начиная с единицы. Гарантируется, что запрос с номером T - запрос на выделение, причем к нему еще не применялось освобождение памяти. Освобожденные ячейки могут снова быть использованы для выделения памяти. Если запрос с номером T был отклонен, то текущий запрос на освобождение памяти игнорируется. Требуется написать менеджер памяти, удовлетворяющий приведенным критериям. Формат входных данных Первая строка входного файла содержит числа N и M - количество ячеек памяти и количество запросов соответственно (1 ≤ N ≤ 231 - 1; 1 ≤ M ≤ 105). Каждая из следующих M строк содержит по одному числу: (i+1)-я строка входного файла (1 ≤ i ≤ M) содержит либо положительное число K, если i-й запрос - запрос на выделение с параметром K (1 ≤ K ≤ N), либо отрицательное число -T, если i-й запрос - запрос на освобождение с параметром T (1 ≤ T < i). Формат выходных данных Для каждого запроса на выделение памяти выведите в выходной файл результат обработки этого запроса: для успешных запросов выведите номер первой ячейки памяти в выделенном блоке, для отклоненных запросов выведите число -1. Результаты нужно выводить в порядке следования запросов во входном файле. Пример
Какое самое большое число ладей можно поставить на шахматную доску 8 на 8 так, чтобы они не били друг друга? Когда мальчик Клайв подошел к дедушкиным настенным часам с кукушкой, на них было 12 часов 5 минут. Клайв стал крутить пальцем минутную стрелку, пока часовая не вернулась на прежнее место. Сколько "ку-ку" насчитал за это время дедушка в соседней комнате?
Петя и Вася нашли на чердаке остатки рыболовной сети своего деда. Часть веревок давно сгнила, и сеть распалась на большое число кусков, каждый из которых состоит не более чем из 50 веревочек единичной длины. Так как использовать по назначению остатки данной сети было уже нельзя, братья разложили один из найденных кусков на прямоугольном столе так, что веревочки оказались параллельны сторонам стола, и стали играть в следующую игру. Братья делают ходы по очереди, Петя ходит первым. Своим ходом игрок находит веревочку, являющуюся стороной некоторой целой единичной квадратной ячейки сети (все четыре образующие ее веревочки целы), и перерезает выбранную веревочку. Проигрывает тот из братьев, который не может сделать очередной ход. Требуется написать программу, которая по описанию куска сети на столе определяет, может ли Петя выиграть при любой игре Васи, и если да, то какой первый ход он должен для этого сделать. Формат входных данных В первой строке входного файла задано число N (1 ≤ N ≤ 50) - количество веревочек единичной длины, из которых состоит кусок сети. Следующие N строк входного файла содержат по две пары целых чисел - координаты концов веревочек. Каждая четверка чисел описывает отрезок единичной длины, параллельный одной из осей координат. Координаты всех точек неотрицательны и не превосходят 50. Формат выходных данных Первая строка выходного файла должна содержать число 1, если Петя может выиграть при любой игре Васи, и число 2, если нет. В случае выигрыша Пети вторая строка должна содержать номер веревочки, которую он должен перерезать первым ходом. Если возможных выигрышных ходов несколько, выведите любой. Веревочки пронумерованы, начиная с 1, в том порядке, в котором они заданы во входном файле. Примечание Максимальная оценка за решение задачи при N ≤ 13 равна 40 баллам. Пример
Дано 25 чисел. Известно, что сумма любых четырёх из них положительна. Верно ли, что сумма всех чисел положительна?
Вновь открытое казино предложило оригинальную игру. В начале игры крупье выставляет в ряд несколько фишек разных цветов. Кроме того, он объявляет, какие последовательности фишек игрок может забирать себе в процессе игры. Далее игрок забирает себе одну из заранее объявленных последовательностей фишек, расположенных подряд. После этого крупье сдвигает оставшиеся фишки, убирая разрыв. Затем игрок снова забирает себе одну из объявленных последовательностей и так далее. Игра продолжается до тех пор, пока игрок может забирать фишки. Рассмотрим пример. Пусть на столе выставлен ряд фишек rrrgggbbb, и крупье объявил последовательности rg и gb. Игрок, например, может забрать фишки rg, лежащие на третьем и четвёртом местах слева. После этого крупье сдвинет фишки, и на столе получится ряд rrggbbb. Ещё дважды забрав фишки rg, игрок добьётся того, что на столе останутся фишки bbb и игра закончится, так как игроку больше нечего забрать со стола. Игрок мог бы действовать и по-другому - на втором и третьем ходах забрать не последовательности rg, а последовательности gb. Тогда на столе остались бы фишки rrb. Аналогично, игрок мог бы добиться того, чтобы в конце остались ряды rrr или rbb. После окончания игры полученные фишки игрок меняет на деньги. Цена фишки зависит от её цвета. Требуется написать программу, определяющую максимальную сумму, которую сможет получить игрок. Формат входных данных В первой строке входного файла записано число K (1 ≤ K ≤ 26) - количество цветов фишек. Каждая из следующих K строк начинается со строчной латинской буквы, обозначающей цвет. Далее в той же строке через пробел следует целое число Xi (1 ≤ Xi ≤ 150, i = 1..K) - цена фишки соответствующего цвета. В (K+2)-ой строке описан ряд фишек, лежащих на столе в начале игры. Ряд задается L строчными латинскими буквами (1 ≤ L ≤ 150), которые обозначают цвета фишек ряда. В следующей строке содержится число N (1 ≤ N ≤ 150) - количество последовательностей, которые были объявлены крупье. В следующих N строках записаны эти последовательности. Гарантируется, что сумма длин этих N строк не превосходит 150 символов, и все они непустые. Формат выходных данных В выходной файл выведите единственное целое число - максимальную сумму денег, которую может получить игрок. Пример
В течение года цены на штрюдели два раза поднимали на 50%, а перед Новым Годом их стали продавать за полцены. Вадим и Лёша спускались с горы. Вадим шёл пешком, а Лёша съезжал на лыжах в семь раз быстрее Вадима. На полпути Лёша упал, сломал лыжи и ногу и пошёл в два раза медленней Вадима. Кто первым спустится с горы? На прямоугольном торте лежит круглая шоколадка. Как разрезать торт на две равные части так, чтобы и шоколадка тоже разделилась ровно пополам? Семь девяток выписали подряд: 9 9 9 9 9 9 9. Поставьте между некоторыми из них знаки «+» или «−», чтобы получившееся выражение равнялось 1989. Эта старинная задача была известна еще в Древнем Риме. Богатый сенатор, умирая, оставил жену в ожидании ребенка. После смерти сенатора выяснилось, что на свое имущество, равное 210 талантам, он составил следующее завещание: «В случае рождения сына отдать мальчику две трети состояния (т. е. 140 талантов), а остальную треть (т.е. 70 талантов) — матери; в случае же рождения дочери отдать девочке одну треть состояния (т. е. 70 талантов), а остальные две трети (т. е. 140 талантов) — матери». У вдовы сенатора родились близнецы — мальчик и девочка. Такой возможности завещатель не предусмотрел. Как можно разделить имущество между тремя наследниками с наилучшим приближением к условию завещания? |
Страница: 1 2 3 4 5 6 7 >> [Всего задач: 100]
Богатый сенатор, умирая, оставил жену в ожидании ребенка. После смерти сенатора выяснилось, что на свое имущество, равное 210 талантам, он составил следующее завещание: «В случае рождения сына отдать мальчику две трети состояния (т. е. 140 талантов), а остальную треть (т.е. 70 талантов) — матери; в случае же рождения дочери отдать девочке одну треть состояния (т. е. 70 талантов), а остальные две трети (т. е. 140 талантов) — матери». У вдовы сенатора родились близнецы — мальчик и девочка. Такой возможности завещатель не предусмотрел. Как можно разделить имущество между тремя наследниками с наилучшим приближением к условию завещания?
Дано 25 чисел. Известно, что сумма любых четырёх из них положительна. Верно ли, что сумма всех чисел положительна?
Страница: 1 2 3 4 5 6 7 >> [Всего задач: 100] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
|