24
Всероссийская олимпиада школьников по информатике Региональный этап, I тур Разбор задач Андрианов И. А. Стрекаловский О. А. Вологодский государственный педагогический университет Факультет прикладной математики, компьютерных технологий и физики Вологда 2014 г. 1/23 Всероссийская олимпиада школьников по информатике

Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

  • Upload
    -

  • View
    754

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Всероссийская олимпиада школьников по

информатике

Региональный этап, I тур

Разбор задач

Андрианов И. А.Стрекаловский О. А.

Вологодский государственный педагогический университетФакультет прикладной математики,компьютерных технологий и физики

Вологда

2014 г.

1/23 Всероссийская олимпиада школьников по информатике

Page 2: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 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 Всероссийская олимпиада школьников по информатике

Page 3: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 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 Всероссийская олимпиада школьников по информатике

Page 4: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 1. POBEDA-2014

Аналогичный код на Java не проходит по точности большиетесты из–за малой точности операции Math.sqrt() при большихзначениях аргумента

Способы решения:

Проверка полученного результата методом обратноговозведения в квадрат и корректировка значения, еслинеобходимо.

Применение метода Ньютона для вычисленияцелочисленного корня из числа.1

1http://e-maxx.ru/algo/roots_newton#2

4/23 Всероссийская олимпиада школьников по информатике

Page 5: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 1. POBEDA-2014

Вопросы по задаче?

5/23 Всероссийская олимпиада школьников по информатике

Page 6: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 2. Список школ

«Список школ»

Идея решения

При решении данной задачи необходимо сначала выделитьномера школ из каждой записи с названием школы исформировать массив, содержащий эти номера.

Используя полученный массив, определить, количествошкол и номера школ, которые встречаются в нем не болеепяти раз.

6/23 Всероссийская олимпиада школьников по информатике

Page 7: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 2. Список школ

Детали реализации на Pascal

Двигаемся по строке и выделям в ней последовательностьцифр, добавляя её в виде строки в массив строк сномерами школ.

Отсортируем массив номеров школ в лексикографическом(алфавитном) порядке.

Используя полученный массив, определяем количествошкол и номера школ, которые встречаются в нем не болеепяти раз последовательным проходом по нему.

7/23 Всероссийская олимпиада школьников по информатике

Page 8: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 2. Список школ

Детали реализации на Java/C++

Упростить поиск последовательности цифр в строке можнос использованием регулярного выражения \\d+ (Java)

Для каждого номера школы хранить количество егоупоминаний в map<string, int>

Вывести из map все ключи, у которых значения ≤ 5

8/23 Всероссийская олимпиада школьников по информатике

Page 9: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 2. Список школ

Вопросы по задаче?

9/23 Всероссийская олимпиада школьников по информатике

Page 10: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 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 Всероссийская олимпиада школьников по информатике

Page 11: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 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 Всероссийская олимпиада школьников по информатике

Page 12: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 3. Межрегиональная олимпиада

Вопросы по задаче?

12/23 Всероссийская олимпиада школьников по информатике

Page 13: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

«Дом Мэра»

Основная сложность задачи. . .

13/23 Всероссийская олимпиада школьников по информатике

Page 14: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

«Дом Мэра»

. . . разобрать все возможные случаи

13/23 Всероссийская олимпиада школьников по информатике

Page 15: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Рассмотрим подробно случай, когда дом имеет координатыxi ≥ 0, yi ≥ 0 (остальные случаи будут почти аналогичны).

Рассмотрим пути, выходящие из мэрии на Север.Возможны два варианта пути:

1 Eдем на Север, затем поворачиваем направо (на Восток),и затем налево (опять на Север); при этом любой отрезокпути может иметь длину, равную 0.

2 Eдем на Север, пересекая горизонтальную улицу, накоторой будет расположен дом Мэра, затем поворачиваемнаправо (на Восток), и затем еще раз направо (обратно наЮг).

Сравнивая эти два пути, можно сказать, что если существуетпервый путь, то он всегда короче второго (если он существует).

14/23 Всероссийская олимпиада школьников по информатике

Page 16: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Выясним, как далеко мы сможем проехать из точки (0, 0) наСевер.

1 Найдём ближайший дом, который перекрывает нам путьна Север (если такой существует).

2 Обозначим ординату (Y ) максимального удаления наСевер от мэрии за R.

3 Если дом находится на отрезке (0, R), то задача решена.

15/23 Всероссийская олимпиада школьников по информатике

Page 17: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Далее выясним, как далеко мы сможем проехать из точки(xi, yi) на Юг до оси X.

1 Найдём ближайший дом, который перекрывает нам путьна Юг (если такой существует).

2 Обозначим ординату (Y ) максимального удаления на Югот дома за S.

16/23 Всероссийская олимпиада школьников по информатике

Page 18: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Если S > R, то пути первого типа нет.Иначе попытаемся найти минимальное значение t на отрезке[S,R], т.ч. можно проехать из точки (0, t) в точку (xi, t)

17/23 Всероссийская олимпиада школьников по информатике

Page 19: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

1 Рассмотрим все здания, которые пересекаются с полосой0 ≤ x ≤ xi.

2 Рассмотрим их проекции на ось Oy, найдем объединениеэтих проекций (открытых интервалов), и найдем точку t наоси Oy, не покрытую объединением интервалов.

1 Для этого можно отсортировать вместе начала и концы

интервалов и пройти по этим точкам, считая баланс:

«количество точек, открывающих интервалы» – «количество

точек, закрывающих интервалы».

2 Если при проходе по точкам в некоторый момент мы получаем

баланс = 0, то данная точка и есть искомая t.

3 Если мы нашли t, то сделаем повороты в нужные стороныв точках (0, t) и (xi, t). Иначе пути первого вида нет.

18/23 Всероссийская олимпиада школьников по информатике

Page 20: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Путь второго вида:Eдем на Север, пересекая горизонтальную улицу, на которойбудет расположен дом Мэра, затем поворачиваем направо (наВосток), и затем еще раз направо (обратно на Юг).Если R ≤ yi, то пути второго вида также нет.

19/23 Всероссийская олимпиада школьников по информатике

Page 21: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Далее выясним, как далеко мы сможем проехать из точки(xi, yi) на Север.

1 Найдём ближайший дом, который перекрывает нам путьна Север (если такой существует).

2 Обозначим ординату (Y ) максимального удаления наСевер от дома за S.

20/23 Всероссийская олимпиада школьников по информатике

Page 22: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

1 Рассмотрим отрезок [yi,min(R,S)] и найдем на нёмминимальную точку t, не покрытую объединениемпроекций интервалов, рассмотренным выше.

2 Если такая точка t существует, то из всех путей,выходящих из точки (0, 0) на Север, кратчайший путьимеет повороты в точках (0, t) и (xi, t). В противномслучае таких путей нет.

3 Заметим, что если t = yi, то второй поворот не нужен.

21/23 Всероссийская олимпиада школьников по информатике

Page 23: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Задача 4. Дом Мэра

Вопросы по задаче?

22/23 Всероссийская олимпиада школьников по информатике

Page 24: Разбор задач областного этапа всероссийской олимпиады школьников по информатике 2014г. I тур

Заключение

Спасибо за внимание!

23/23 Всероссийская олимпиада школьников по информатике