|
Лекции по структурам и алгоритмам обработки данных (СиАОД) 23Примеры Ввод 1 Ввод 2 4 4 0 0 0 1 10 0 1 0 10 10 1 1 0 10 1 0 3 1 0 1 1 0 0 0 1 1 9 11 11 9 9 -1 100 100 Вывод 1 Вывод 2 1 1 1 1 2 1 0 1 15.2. Разноска пиццы (15) В городе X все улицы параллельны координатным осям. Каждая точка с целочисленными координатами является пересечением двух улиц. Кварталы плотно застроены небоскребами, поэтому расстояние между точками (X1, Y1) и (X2, Y2) определяется как | X1 - X2 | + | Y1 - Y2 |. Компания по разноске пиццы имеет в городе N точек. Покупателям пицца приносится мальчиками, которые передвигаются с разной скоростью, поэтому для каждой пиццерии известно максимальное расстояние, на которое может быть доставлен заказ. Кризис вынуждает закрыть ряд пиццерий. Было принято решение закрыть какие-либо пиццерии из тех, которые находятся в пределах досягаемости не менее чем из K других пиццерий. Требуется выявить все пиццерии, которые могут оказаться зарытыми. Ввод из файла INPUT.TXT. В первой строке находятся два целых числа N и K через пробел (2 N 105, 1 M N -1). Следующие N строка содержат целочисленные координаты очередной пиццерии X, Y и максимальное расстояние W для доставки пиццы (0 X, Y, W 109 ). Вывод в файл OUTPUT.TXT. В первой строке выводится число пиццерий T, которые могут быть закрыты. Вторая строка содержит T целых чисел через пробел – номера пиццерий, которые могут быть закрыты в порядке возрастания их номеров. Примеры Ввод 1 Ввод 2 Ввод 3 2 1 3 2 3 2 0 0 1 0 0 1 0 0 100 1 0 1 13 17 5 10 3 1 10 10 10 Вывод 1 Вывод 2 Вывод 3 2 0 1 1 2 2 Подсказка Геометрическим местом точек, удаленным не более чем на W от точки (X, Y), будет квадрат с вершинами в точках (X - W, Y), (X + W, Y), (X, Y- W), (X, Y+ W). Чтобы стороны квадратов стали параллельными осям координат, выполним поворот всех точек на π/4 относительно начала координат против часовой стрелки. Тогда координатами новых точек будут X' = (X√2 - Y√2)/2 ; Y' = (X√2 + Y√2)/2 . _ Далее выполним масштабирование координат с коэффициентом √2. Новые координаты примут простой вид X' = X - Y ; Y' = X + Y . После преобразования длина стороны квадрата станет равной 2W, то есть преобразование сохраняет целочисленные значения координат точек и дает целочисленное значение стороны квадрата. Далее нужно применить метод сканирующей прямой и с помощью дерева отрезков с функцией суммы обработать стандартные события.
15.3. Построение (9) В одной военной части построили солдат в одну шеренгу по убыванию роста. Часть была далеко не образцовая. Солдаты часто приходили не вовремя, а то их и вовсе приходилось выгонять из строя за плохо начищенные сапоги. Однако солдаты в процессе прихода и ухода всегда должны быть выстроены по росту. Известно, что все солдаты разного роста. Требуется для каждого приходящего солдата указывать, перед каким солдатом в строю он должен становиться. Ввод из файла INPUT.TXT. Первая строка содержит количество команд N (1 N 30000). В каждой следующей строке содержится описание команды: числа 1 и X, если солдат приходит в строй (X – рост солдата от 1 до 100000) и числа 2 и Y, если солдата, стоящего в строю на месте Y надо удалить из строя. Солдаты в строю нумеруются с 1. Вывод в файл OUTPUT.TXT. На каждую команду 1 (добавление в строй) нужно выводить в отдельной строке число K – номер позиции, на которую должен встать этот солдат (все стоящие за ним двигаются назад). Пример Ввод 5 1 100 1 200 1 50 2 1 1 150 Вывод 1 1 3 2
15.4. Сугробы на ЛЭП (9) Служба электроснабжения проводит мониторинг уровня снега, лежащего на ЛЭП. Вся ЛЭП разбивается на участки опорами. Если снег падает на некоторый интервал ЛЭП, то высота снежного покрова на этом интервале увеличивается на высоту выпавшего снега. Снег также имеет тенденцию таять на некотором участке трассы в результате оттепели, однако сугробов отрицательной толщины быть нет может. Энергетикам крайне важно уметь узнавать суммарную высоту снежного покрова на некоторых участках, чтобы определять вероятность обрыва проводов. Ввод из файла INPUT.TXT. В первой строке находятся через пробел два числа: N – количество опор (1 N 10000) и M – количество команд (1 M 50000). Команды бывают двух видов:
Таяние снега показывает первый вид команды с отрицательным значением S. Опоры нумеруются от 1 до N. Вывод в файл OUTPUT.TXT. На каждый запрос (команду второго вида) требуется выводить суммарную высоту снежного покрова, лежащего на проводах от L-й опоры по R-ю.
Ввод 11 5 1 1 10 10 1 2 6 -3 2 5 9 1 1 7 25 2 1 3 Вывод 37 67 15.5. Оранжерея (15) Оранжерея представляет собой прямоугольный участок для выращивания растений пермского периода. Оранжерея была разбита дорожками на квадраты. В центре каждого квадрата посажено одно растение. Размер квадрата зависит от корневой системы растения. За год дорожки заросли травой, что затруднило уход за оранжереей. Чтобы при садовых работах не повредить корневую систему какого-либо растения, по имеющемуся расположению растений необходимо восстановить размеры соответствующих им квадратов. Введем декартову прямоугольную систему координат, начало которой совмещено с левым нижним углом оранжереи. Ось Ox направлена вдоль нижней границы участка, ось Oy – вдоль левой. Изначально дорожки были проложены параллельно осям координат. Единичный отрезок удалось выбрать так, что координаты углов каждого из квадратов оказались целыми. Требуется написать программу, которая по размеру оранжереи и координатам растений определит размеры соответствующих им квадратов. Ввод из файла INPUT.TXT. В первой строке записаны три натуральных числа: W – ширина оранжереи, H – длина оранжереи и N – количество посаженых растений (N ≤ 2×105). В каждой из следующих N строк расположены по два числа: xi, yi – координаты i-го растения (0 < xi < W, 0 < yi < H, xi, yi ≤ 2×109). Гарантируется, что соответствующие растениям квадраты имеют целую длину стороны и покрывают всю оранжерею. Вывод в файл OUTPUT.TXT. Необходимо вывести N целых чисел – размеры квадратов, соответствующих растениям. Числа вывести в порядке описания растений во входном файле.
Ввод 1 Ввод 2
Вывод 1 Вывод 2
|
Loading
|