Московская олимпиада по информатике - 2005: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 1:
<div style="border:thin solid #430; background:#f9fff8;margin:0.8em;padding:1em;">Уважаемые участники олимпиады! На этой странице вы можете не только ознакомиться с разборами задач, подготовленных жюри, но и внести свой вклад в улучшение этих текстов, пользуясь вкладкой "править": исправить ошибки и опечатки, добавить свои комментарии, предложения, другие варианты алгоритмов и т. п. Обсудить возникшие вопросы можно на странице "обсуждение", посмотреть исходный вариант этого текста - на странице "история".</div>
 
Здесь размещены задачи очного тура 2005/06 учебных годов. Условия задач доступны на официальном сайте олимпиады: [http://www.olympiads.ru/moscow olympiads.ru].
== 2005/06 учебный год. Очный тур ==
Условия задач доступны на официальном сайте олимпиады: http://www.olympiads.ru/moscow
 
=== Задача A. Триангуляция ===
''Автор задачи и разбора – В.М.Гуровиц''
 
Строка 90 ⟶ 89 :
Существует множество других алгоритмов, решающих задачу за время ''O(N log N)'' или ''O(N<sup>2</sup>)'', что удовлетворяет приведенным в задаче ограничениям. Но реализация этих алгоритмов не проще, а зачастую сложнее приведенной в этом разборе реализации линейного алгоритма.
 
=== Задача B. Палиндром ===
''Автор разбора – В.М.Гуровиц''
 
Строка 134 ⟶ 133 :
end;
 
=== Задача C. Представление числа ===
''Автор задачи и разбора - А.Ю.Гусаков''
 
Строка 249 ⟶ 248 :
Оказывается, что приведенную динамическую схему можно упростить. Достаточно для каждого числа m хранить информацию лишь о самом коротком выражении, независимо от его типа. При этом, если для данного числа самое короткое выражение может быть как выражением типа 1, так и выражением типа 2, то нужно выбирать произведение, а не сумму. Обоснование правильности этого алгоритма оставим читателю.
 
=== Задача D. Восстанови многоугольник ===
''Автор задачи и разбора – В.М.Гуровиц''[[Файл:moi_06_1_D1.gif|right|frame|Рис. 1]]
 
Строка 311 ⟶ 310 :
В приведённой программе мы считывали все числа в двумерный массив. На самом деле в этом нет необходимости: на каждом шаге алгоритма мы используем лишь две последовательные строки чисел, поэтому можно читать строки чисел из файла последовательно, используя лишь два одномерных массива.
 
=== Задача E. Распредели призы ===
 
''Автор задачи - Е.В.Андреева, авторы разбора - Е.В.Андреева и В.М.Гуровиц ''
Строка 352 ⟶ 351 :
ответ сразу, вычисляя числа в столбцах по мере их печати.
 
=== Задача F. Монополия ===
''Автор задачи и разбора - А.П.Лахно''
 
Строка 404 ⟶ 403 :
3 5
 
=== Задача G. Найди прямую ===
''Автор задачи и разбора - Б.О.Василевский''
 
Строка 497 ⟶ 496 :
'''''Шаг 3 (сортировка и поиск прямой с максимальной степенью). '''''Теперь отсортируем полученный список по полярному углу и будем действовать как в простом случае (единственное отличие – стартовое значение C может быть отлично от нуля).
 
=== Задача H. Тупики ===
 
''Автор задачи - В.А. Матюхин, автора разбора - В.М.Гуровиц ''
 
 
 
Задача решается моделированием описанного в условии процесса. Будем хранить номера свободных на данный момент тупиков, и список стоящих в тупиках в данный момент электричек (точнее, времена их отправления и номера тупиков, в которых они стоят). Будем читать из файла последовательно информацию о прибывающих электричках. Для каждой прибывающей электрички нам потребуется: