Upload
-
View
754
Download
5
Embed Size (px)
Citation preview
Всероссийская олимпиада школьников по
информатике
Региональный этап, I тур
Разбор задач
Андрианов И. А.Стрекаловский О. А.
Вологодский государственный педагогический университетФакультет прикладной математики,компьютерных технологий и физики
Вологда
2014 г.
1/23 Всероссийская олимпиада школьников по информатике
Задача 1. POBEDA-2014
«POBEDA-2014»
Идея решения
Для того, чтобы нарисовать единичный квадрат, требуетсялибо по одному треугольнику типа 1 и 2, либо по одномутреугольнику типа 3 и 4.
Таким образом, из a1 треугольников типа 1 и a2треугольников типа 2 можно составить не болееmin(a1, a2) квадратов, а из a3 треугольников типа 3 и a4треугольников типа 4 — min(a3, a4) квадратов.
2/23 Всероссийская олимпиада школьников по информатике
Задача 1. POBEDA-2014
Код на Pascal и С++ весьма очевиден
Pas ca l :var
a , b , c , d , n , Squa r eS i z e : i n t 6 4 ;
. . .
n := Min ( a , b ) + Min ( c , d ) ;Squa r eS i z e := t r unc ( s q r t ( 1 . 0 ∗ n ) ) ;
C++:long long a1 , a2 , a3 , a4 ;
. . .
long long n = min ( a1 , a2 ) + min ( a3 , a4 ) ;long s q u a r e S i z e = s q r t ( ( long double ) n ) ;
3/23 Всероссийская олимпиада школьников по информатике
Задача 1. POBEDA-2014
Аналогичный код на Java не проходит по точности большиетесты из–за малой точности операции Math.sqrt() при большихзначениях аргумента
Способы решения:
Проверка полученного результата методом обратноговозведения в квадрат и корректировка значения, еслинеобходимо.
Применение метода Ньютона для вычисленияцелочисленного корня из числа.1
1http://e-maxx.ru/algo/roots_newton#2
4/23 Всероссийская олимпиада школьников по информатике
Задача 1. POBEDA-2014
Вопросы по задаче?
5/23 Всероссийская олимпиада школьников по информатике
Задача 2. Список школ
«Список школ»
Идея решения
При решении данной задачи необходимо сначала выделитьномера школ из каждой записи с названием школы исформировать массив, содержащий эти номера.
Используя полученный массив, определить, количествошкол и номера школ, которые встречаются в нем не болеепяти раз.
6/23 Всероссийская олимпиада школьников по информатике
Задача 2. Список школ
Детали реализации на Pascal
Двигаемся по строке и выделям в ней последовательностьцифр, добавляя её в виде строки в массив строк сномерами школ.
Отсортируем массив номеров школ в лексикографическом(алфавитном) порядке.
Используя полученный массив, определяем количествошкол и номера школ, которые встречаются в нем не болеепяти раз последовательным проходом по нему.
7/23 Всероссийская олимпиада школьников по информатике
Задача 2. Список школ
Детали реализации на Java/C++
Упростить поиск последовательности цифр в строке можнос использованием регулярного выражения \\d+ (Java)
Для каждого номера школы хранить количество егоупоминаний в map<string, int>
Вывести из map все ключи, у которых значения ≤ 5
8/23 Всероссийская олимпиада школьников по информатике
Задача 2. Список школ
Вопросы по задаче?
9/23 Всероссийская олимпиада школьников по информатике
Задача 3. Межрегиональная олимпиада
«Межрегиональная олимпиада»
Идея решения
Отсортируем задачи по возрастанию времени окончанияих выполнения (start+ time).
Пусть a[i] — максимальное количество баллов, которыеможно набрать, решая только задачи из числа «первых» i
задач.
Рассмотрим i–ю задачу. Пусть prev — это номерпоследней задачи, которая заканчивается не позже, чемвыдается i–я задача (то есть startprev + timeprev ≤ starti,a startprev+1 + timeprev+1 > starti).
Тогда a[i] = max(a[i− 1], a[prev] + cost[i]).
Из этого следует, что можно либо решить задачу сномером i и какой-то набор задач с номерами не большеprev, либо не решать задачу с номером i.
Ответом на поставленный вопрос будет число a[n].10/23 Всероссийская олимпиада школьников по информатике
Задача 3. Межрегиональная олимпиада
Детали реализации
Искать задачу prev можно полным перебором за O(N),двоичным поиском за O(logN).
Получение списка решаемых задач
Для получения списка задач, решение которых позволитнабрать сумму a[n], будем хранить дополнительныймассив take, в котором укажем, какой выбор был сделанна каждом шаге.
Если a[i] = cost[i] + a[prev], то take[i] := prev.Это будет означать, что решается задача с номером i, апредыдущая задача имеет номер не больше prev.В противном случае take[i]:= –1.
Теперь, пройдя с конца по массиву take, можновосстановить список решаемых задач.
11/23 Всероссийская олимпиада школьников по информатике
Задача 3. Межрегиональная олимпиада
Вопросы по задаче?
12/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
«Дом Мэра»
Основная сложность задачи. . .
13/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
«Дом Мэра»
. . . разобрать все возможные случаи
13/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Рассмотрим подробно случай, когда дом имеет координатыxi ≥ 0, yi ≥ 0 (остальные случаи будут почти аналогичны).
Рассмотрим пути, выходящие из мэрии на Север.Возможны два варианта пути:
1 Eдем на Север, затем поворачиваем направо (на Восток),и затем налево (опять на Север); при этом любой отрезокпути может иметь длину, равную 0.
2 Eдем на Север, пересекая горизонтальную улицу, накоторой будет расположен дом Мэра, затем поворачиваемнаправо (на Восток), и затем еще раз направо (обратно наЮг).
Сравнивая эти два пути, можно сказать, что если существуетпервый путь, то он всегда короче второго (если он существует).
14/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Выясним, как далеко мы сможем проехать из точки (0, 0) наСевер.
1 Найдём ближайший дом, который перекрывает нам путьна Север (если такой существует).
2 Обозначим ординату (Y ) максимального удаления наСевер от мэрии за R.
3 Если дом находится на отрезке (0, R), то задача решена.
15/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Далее выясним, как далеко мы сможем проехать из точки(xi, yi) на Юг до оси X.
1 Найдём ближайший дом, который перекрывает нам путьна Юг (если такой существует).
2 Обозначим ординату (Y ) максимального удаления на Югот дома за S.
16/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Если S > R, то пути первого типа нет.Иначе попытаемся найти минимальное значение t на отрезке[S,R], т.ч. можно проехать из точки (0, t) в точку (xi, t)
17/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
1 Рассмотрим все здания, которые пересекаются с полосой0 ≤ x ≤ xi.
2 Рассмотрим их проекции на ось Oy, найдем объединениеэтих проекций (открытых интервалов), и найдем точку t наоси Oy, не покрытую объединением интервалов.
1 Для этого можно отсортировать вместе начала и концы
интервалов и пройти по этим точкам, считая баланс:
«количество точек, открывающих интервалы» – «количество
точек, закрывающих интервалы».
2 Если при проходе по точкам в некоторый момент мы получаем
баланс = 0, то данная точка и есть искомая t.
3 Если мы нашли t, то сделаем повороты в нужные стороныв точках (0, t) и (xi, t). Иначе пути первого вида нет.
18/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Путь второго вида:Eдем на Север, пересекая горизонтальную улицу, на которойбудет расположен дом Мэра, затем поворачиваем направо (наВосток), и затем еще раз направо (обратно на Юг).Если R ≤ yi, то пути второго вида также нет.
19/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Далее выясним, как далеко мы сможем проехать из точки(xi, yi) на Север.
1 Найдём ближайший дом, который перекрывает нам путьна Север (если такой существует).
2 Обозначим ординату (Y ) максимального удаления наСевер от дома за S.
20/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
1 Рассмотрим отрезок [yi,min(R,S)] и найдем на нёмминимальную точку t, не покрытую объединениемпроекций интервалов, рассмотренным выше.
2 Если такая точка t существует, то из всех путей,выходящих из точки (0, 0) на Север, кратчайший путьимеет повороты в точках (0, t) и (xi, t). В противномслучае таких путей нет.
3 Заметим, что если t = yi, то второй поворот не нужен.
21/23 Всероссийская олимпиада школьников по информатике
Задача 4. Дом Мэра
Вопросы по задаче?
22/23 Всероссийская олимпиада школьников по информатике
Заключение
Спасибо за внимание!
23/23 Всероссийская олимпиада школьников по информатике