| |||||
|
|
Задача 1. Знакопеременная последовательностьДля раскодирования информации, посылаемой по проводам
связи, специальный прибор должен считать количество отрезков возрастания и
убывания напряжения в проводе. На вход прибору подается N замеренных в разные отрезки времени
величин напряжения a1, a2, ..., aN, а прибор должен выдать длину максимальной знакопеременной
последовательности Чтобы подавить шумы, возникающие в линиях
связи, введены следующие два ограничения на знакопеременную
подпоследовательность. Во-первых, числа в исходной последовательности должны
быть удалены друг от друга не менее, чем на L,
то есть i2 - i1 ≥ L, i3 -i2 ≥ L, ..., iM - iM-1 ≥ L. Во-вторых, два рядом идущих числа
должны отличаться по модулю не менее, чем на U,
то есть Входные данныеВ первой строке входного файла записаны через пробел целые положительные числа N, L, U, причем N ≤ 5000, L ≤ 5000, U ≤ 109. В последующих N строках содержатся целые числа ai, по одному в каждой строке, |ai|≤109. Выходные данныеВ единственной строке выходного файла должно содержаться число M - длина максимальной знакопеременной подпоследовательности, удовлетворяющей указанным ограничениям. Пример
Задача 2. Лабиринт со сдвигамиВ далёкой сказочной стране жил-был волшебник. Как-то раз узнал волшебник о существовании магической книги, написанной в давние времена. Неизвестно ни то, о чём эта книга, ни зачем она была написана, но зато известно, где она была спрятана. А спрятал ее злой маг. Он хотел, чтобы никто и никогда не смог достать эту книгу, и поэтому создал лабиринт, который необходимо пройти, чтобы добраться до нее. Лабиринт расположен под землёй, на N этажах. Каждый этаж состоит из M блоков, выстроенных в ряд. Некоторые блоки могут быть полыми. Перемещаться по лабиринту можно только внутри полых блоков сверху вниз, а также между полыми блоками, соприкасающимися своими гранями, вправо и влево, причем нельзя переходить с нижнего этажа на верхний. Рассмотрим лабиринт, состоящий из трех этажей, каждый з которых образован семью блоками (N = 3, M = 7).
Задача 3. Многопроцессорная системаМногопроцессорная
система состоит из N (N £
1000)
процессоров. На ней требуется выполнить K
(K £
1000)
независимых программ. Известны объемы всех программ, а также скорости работы каждого
процессора. Требуется
определить минимальное время, за которое все программы будут выполнены. В
процессе работы процессоры могут обмениваться программами, не теряя при этом времени, и
продолжать выполнять программы, начатые другими процессорами. Входные данныеВ первой строке
входного файла содержится число K.
Начиная со следующей строки, задаются К
целых чисел, разделенных пробелами или символами конца строки, - времена
исполнения этих программ на стандартном процессоре в секундах. В следующей строке
содержится число N. Далее с новой
строки приводятся N положительных действительных чисел.
Эти числа определяют отношение скоростей работы соответствующих процессоров к скорости стандартного. Они не
превышают 1000 и разделены пробелами или символами конца строки. Выходные данныеВ выходной файл требуется вывести одно вещественное число - минимальное время выполнения всех программ в секундах с точностью до 0.00001. Пример
Задача 4. Циклический рядПоследовательность из 2n чисел называется циклическим рядом, если выполнены следующие требования: все элементы последовательности различны; все элементы последовательности - целые неотрицательные числа; все элементы последовательности меньше 2n; двоичные записи любых двух соседних чисел отличаются лишь в одном разряде; двоичные записи первого и последнего числа отличаются лишь в одном разряде. Требуется для заданного целого числа n построить какой-нибудь циклический ряд. Входные данныеВо входном файле задано целое неотрицательное число n < 14. Выходные данныеВ выходной файл следует вывести циклический ряд для заданного n в порядке следования элементов этого ряда в последовательности. Числа ряда нужно разделять одним пробелом. Пример
Задача 5. Программа для роботаНа одном секретном заводе инженеры задумались об экономии топливных
расходов. Дело в том, что каждый день робот-конструктор перемещается от одного
объекта завода до другого в соответствии со своей программой. При перемещении
робот тратит топливо как на движение по прямой, так и на повороты. Инженеры
решили перепрограммировать робота, чтобы он затрачивал на перемещение
минимальное количество топлива. Ваша задача состоит в том, чтобы составить для
робота такую программу. Во время своего движения по территории завода, которую можно представить в
виде квадрата размером 1000x1000 клеток, робот может перемещаться только по горизонталям и по вертикалям
этого квадрата. При этом повороты (или развороты) робот может делать только в
специальных контрольных пунктах, которые находятся в выделенных M клетках (1 £ M £ 100). Задача робота состоит в том, чтобы
перейти из контрольного пункта с номером 1 в контрольный пункт с номером M. Известно, что такой маршрут всегда
существует. Программой робота называется последовательность номеров контрольных
пунктов, через которые он проходит на своем пути, в порядке их посещения. Входные данныеВ первой строке
входного файла заданы четыре целых неотрицательных числа A, B, C, D,
не превосходящие 100 каждое. Число A обозначает количество топлива, требующееся на перемещение из одной
клетки в соседнюю;. B и С - количество топлива,
требующееся на изменение направления движения робота, соответственно, направо и
налево на 90 градусов; D - количество топлива, требующееся для
разворота робота при его движении. Во второй строке
входного файла содержится целое число M - количество контрольных
пунктов на территории
завода. В каждой из последующих M строк заданы координаты клеток,
соответствующие этим контрольным пунктам. Координатами клетки называется пара
номеров горизонтали и вертикали, на которых она находится. При этом по
горизонтали клетки считаются слева
направо, по вертикали - снизу вверх. Выходные данныеВ первой строке
выходного файла должно содержаться минимальное количество топлива, требующееся
роботу на перемещение из контрольного пункта с номером 1 в контрольный пункт с
номером M. Во второй строке
должна содержаться программа для робота, на выполнение которой уйдет наименьшее
количество топлива. Если таких программ несколько, то требуется вывести любую
из них. Примеры
Задача 6. Нумерация координатной сетки Узлы координатной сетки занумерованы по спирали, как показано на рисунке. Необходимо по координате узла определить его номер.
Входные данныеВ первой строке входного файла записано целое число N - число тестов в файле ( 0<N£100000). В последующих N строках на каждой строке расположены два целых числа X и Y, разделённые пробелом, - координаты узлов по оси X и Y, соответственно (-20000 < X < 20000 , -20000 < Y < 20000). Выходные данныеВ выходной файл необходимо записать N целых чисел, по одному на строке, - номера соответствующих узлов, координаты которых указаны во входном файле. Пример
Задача 7. ПреферансВ новой колоде 32 карты для преферанса расположены в
следующем порядке (сверху вниз): червы, бубны, трефы, пики. В каждой масти
сначала лежит семерка, под ней - восьмерка, затем девятка, десятка, валет, дама,
король, туз. Тасовка карт осуществляется так: 16 карт, составляющих верхнюю
половину колоды, распределяются между картами нижней половины колоды. Каждая
карта верхней половины вставляется в нижнюю колоду так, что в получившейся
колоде карты верхней половины идут в том же порядке, в котором они были
изначально. Любое число карт верхней половины можно располагать как над
верхней, так и под нижней картой второй
половины колоды, а также между любыми двумя соседними картами нижней половины
колоды. Такие действия повторяются
не более пяти раз. Требуется написать программу,
которая указывает, как надо осуществить тасовку, чтобы в итоге получить заранее
заданное расположение карт. Входные данныеЕдинственная строка входного файла содержит информацию о порядке карт, в котором они должны оказаться после тасовки. Карты перечислены сверху вниз. Каждая карта обозначается латинской буквой, указывающей масть (пики - S, трефы - C, бубны - D, червы - H), и номиналом (туз - A, король - K, дама - Q, валет - J, десятка - 0, остальные - в соответствии со своим значением: 9, 8, 7). Выходные данныеВ
первую строку выходного файла необходимо вывести целое число N
(0 £
N £ 5) - количество шагов
тасовки. Следующие N
строк должны содержать информацию о каждом шаге тасовки. Каждая строка при этом
должна содержать 16 чисел, указывающих
номера позиций, на которых оказываются снятые карты. Номера позиций
выводятся в порядке возрастания и разделены пробелами. Нумерация
позиций производится сверху вниз от 1 до 32. Если указанное расположение карт
получить невозможно, то требуется вывести одно число "-1". Пример
Задача
8. Лампочки
Для проведения городского праздника на главной
улице города развесили n (1 £ n £ 108)
разноцветных лампочек. Переключениями лампочек занимается компьютер, для
которого была написана программа. Эта программа представляет собой
последовательность из m целых чисел (1 £ m £ 10000). Числа в
последовательности принимают значения от 1 до k
(1 £ k £ 50). Компьютер через
некоторый интервал времени считывает очередное число i и переключает все лампочки с номерами, кратными i. Если лампочка с номером, кратным i,
горела, то она выключится, и наоборот. Изначально все лампочки горят. Главного
менеджера праздника заинтересовало, сколько лампочек будет гореть после
выполнения заданной программы. Помогите ему в этом. Входные данныеВ первой строке входного файла через пробел записаны целые числа n, k и m. Следующая строка содержит последовательность из m целых чисел - программу переключения лампочек. Выходные данныеВ выходной файл необходимо выдать одно целое число - количество лампочек, которые останутся гореть. Пример
|
|