SlideShare a Scribd company logo
1 of 28
Download to read offline
Всероссийская олимпиада школьников по
информатике
Региональный этап, I тур
Разбор задач
Андрианов И. А.
Стрекаловский О. А.
Вологодский государственный университет
Факультет прикладной математики,
компьютерных технологий и физики
Вологда
2015 г.
1/26 Всероссийская олимпиада школьников по информатике
«Выбор зала»
Пусть длина наименьшей стороны x, а большей — y.
Тогда заметим, что должны выполняться следующие
ограничения:
y ≥ x
x ∗ y ≥ A ⇒ y ≥ A/x
2 ∗ (x + y) ≥ C ⇒ y ≥ C/2 − x
Таким образом, минимально подходящее y равно:
ymin = max{x, ⌈A/x⌉, ⌈C/2 − x⌉}
2/26 Всероссийская олимпиада школьников по информатике
«Выбор зала »
x ∗ y ≥ B ⇒ y ≥ B/x
2 ∗ (x + y) ≥ D ⇒ y ≥ D/2 − x
Таким образом, максимально подходящее y равно:
ymax = min{⌊B/x⌋, ⌊D/2 − x⌋}
3/26 Всероссийская олимпиада школьников по информатике
«Выбор зала»
Переберём меньшую сторону зала до
√
B
Для каждого x вычислим ymin и ymax и прибавим к ответу
max{0, ymax − ymin + 1}
4/26 Всероссийская олимпиада школьников по информатике
«Выбор зала»
Типичные ошибки
Перебор стороны зала до B, вместо перебора до
√
B
Использование 32-x разрядного типа данных
Округления не в ту сторону
Не обработали случай ymin > ymax
5/26 Всероссийская олимпиада школьников по информатике
Вопросы по задаче?
6/26 Всероссийская олимпиада школьников по информатике
«Призы»
Воспользуемся префиксными суммами и префиксными
максимумами.
Научимся за O(1) находить сумму значений ценности для
любого отрезка номеров
Создадим массив префиксных сумм s.
s[i] := (a1 + a2 + . . . + ai) для всех i от 0 до n
Это можно сделать за один проход по всем ai
Теперь сумма значений ai на отрезке от L до R
вычисляется как s[R] − s[L − 1]
7/26 Всероссийская олимпиада школьников по информатике
«Призы»
Для всех i от 1 до n вычислим массивы префиксных и
суффиксных максимумов
pref[i] =
max{s[k] − s[0], s[k + 1] − s[1], . . . , s[i] − s[i − k]}
suff[i] =
max{s[i + k − 1] − s[i − 1], s[i + k] − s[i], . . . , s[n] − s[n − k]}
pref и suff можно вычислить за линейный проход по s
8/26 Всероссийская олимпиада школьников по информатике
«Призы»
Теперь для решения задачи достаточно перебрать ход Алисы
Если Алиса выбрала отрезок призов [A, A + k − 1], то
максимальное значение, которое может достаться Бобу
будет
max{pref[A − 1], suff[A + k]}
Выбрать минимум из всех возможных максимальных
выигрышей Боба
9/26 Всероссийская олимпиада школьников по информатике
«Призы»
Типичные ошибки
Неэффективное решение.
Много проходов по исходным данным.
Выходы за границы массивов
Использование 32-x разрядного типа данных
10/26 Всероссийская олимпиада школьников по информатике
Вопросы по задаче?
11/26 Всероссийская олимпиада школьников по информатике
«Река»
Общий подход к хранению информации о предприятии для частичных решений
Используем двухсвязный список
Для предприятия с номером v будем хранить
next[v] — номер следующего предприятия и
prev[v] — номер предыдущего предприятия вдоль реки
При банкротстве предприятия соответствующий ему
элемент списка удаляется, а при разделении он удаляется
и в соответствующее место списка вставляются номера
новых предприятий
12/26 Всероссийская олимпиада школьников по информатике
«Река»
Подсчет суммы квадратов длин отрезков реки
Будем хранить в ans текущую сумму квадратов длин отрезков
реки, а в len[i] — длину отрезка реки i-ого предприятия
Считаем ans во время заполнения len по входным данным
и выводим ans как ответ до обработки запросов
13/26 Всероссийская олимпиада школьников по информатике
«Река»
Подсчет суммы квадратов длин отрезков реки
Пересчитываем ans и len при событиях
При банкротстве предприятия c номером v:
ans− = (len[v])2
ans− = (len[next[v]])2
ans− = (len[prev[v]])2
len[prev[v]]+ = len[v]/2
len[next[v]]+ = (len[v] + 1)/2
ans+ = (len[next[v]])2
ans+ = (len[prev[v]])2
При разделении предприятия на два c номером v:
ans− = (len[v])2
len[first] = len[v]/2
len[second] = (len[v] + 1)/2
ans+ = (len[first])2
ans+ = (len[second])2
14/26 Всероссийская олимпиада школьников по информатике
«Река»
Алгоритм работы частичного решения для 1–ой и 2–ой подзадачи
Создаём двунаправленный список по входным данным,
заполяем ans и len
При запросе проходимся по списку и за O(N) для 1–ой
подзадачи или за O(1) для 2–ой подзадачи и ищем нужное
предприятие
Обрабатываем добавление/удаление предприятий в списке,
пересчитываем ans и len за O(1)
15/26 Всероссийская олимпиада школьников по информатике
«Река»
Структуры данных частичных решений 3–ей подзадачи
Происходят только банкротства ⇒новых предприятий не
создается.
Для поиска и удаления i–ого предприятия за O(ln N) можно
использовать структуры данных:
Дерево отрезков1
Дерево Фенвика2
1
http://e-maxx.ru/algo/segment_tree
2
http://e-maxx.ru/algo/fenwick_tree
16/26 Всероссийская олимпиада школьников по информатике
«Река»
Структуры данных для полного решения
Декартово дерево по неявному ключу3
Удаление, вставка и поиск i–ого элемента за O(ln N)
SQRT–декомпозиция4
Удаление, вставка и поиск i–ого элемента за O(
√
N)
3
http://e-maxx.ru/algo/treap
4
http://e-maxx.ru/algo/sqrt_decomposition
17/26 Всероссийская олимпиада школьников по информатике
«Река»
Типичные ошибки
Неэффективное решение.
Много проходов по исходным данным, копирование
массивов
Отсутствие контроля при поиске предыдущего и
следующего предприятия (их может не быть)
Использование 32-x разрядного типа данных
18/26 Всероссийская олимпиада школьников по информатике
Вопросы по задаче?
19/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Основные идеи решения:
Заметим, что имя сервера и имя раздела состоят не более
чем из 5и частей каждое ⇒ для каждого адреса
существует лишь небольшое число фильтров, под которые
он потенциально может подходить
Разместив строки с фильтрами в структуре данных, в
которой возможен быстрый поиск и добавление за O(ln N)
или O(1), мы можем быстро проверять наличие фильтра
Префиксное дерево (Trie)5
Стандартные структуры данных в Java, С++, Python, C#
Самописные хэш–таблицы для быстрого поиска строк
В решении следует учитывать возможность появления
фильтров–дубликатов во входных данных
5
https://en.wikipedia.org/wiki/Trie
20/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Формирование списка фильтров для сервера
Пусть дан сервер "a.b.c.d.e".
Возможны следующие варианты:
a.b.c.d.e
*.a.b.c.d.e
*.b.c.d.e
*.c.d.e
*.d.e
*.e
Итого 6 вариантов фильтров для сервера
21/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Формирование списка фильтров для пути в сервере
Пусть в сервере задан путь "a/b/c/d/e".
Возможны следующие варианты:
a/b/c/d/e
a/b/c/d/e/*
a/b/c/d/*
a/b/c/*
a/b/*
a/*
/*
Итого 7 вариантов фильтров для пути в сервере
22/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Итоговый алгоритм:
Сохраняем все фильтры в структуру данных
Разделяем строку на название сервера и путь
Для каждого названия сервера и пути строим список
подходящих фильтров
Перебираем все комбинации
"фильтр для сервера"+"фильтр для пути"
и ищем эту строку среди фильтров
23/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Типичные ошибки
Неэффективное хэширование при поиске строк
Неучитывание фильтров–дубликатов
24/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Типичные ошибки
Неэффективное хэширование при поиске строк
Неучитывание фильтров–дубликатов
Решение на C++
Неэффективая работа при использовании стандартного
контейнера map/unordered_map для типа string
Медленный ввод-вывод данных через cin и cout
24/26 Всероссийская олимпиада школьников по информатике
«Чемпионат по поиску в сети Меганет»
Типичные ошибки
Неэффективное хэширование при поиске строк
Неучитывание фильтров–дубликатов
Решение на C++
Неэффективая работа при использовании стандартного
контейнера map/unordered_map для типа string
Медленный ввод-вывод данных через cin и cout
Решение на Java
На стандартном HashMap решение проходит без
дополнительной оптимизации
24/26 Всероссийская олимпиада школьников по информатике
Вопросы по задаче?
25/26 Всероссийская олимпиада школьников по информатике
Заключение
Спасибо за внимание!
26/26 Всероссийская олимпиада школьников по информатике

More Related Content

What's hot

Doklad postroeniegraphikov 2
Doklad postroeniegraphikov 2Doklad postroeniegraphikov 2
Doklad postroeniegraphikov 2Kydas
 
уравнение с двумя переменными презентация
уравнение с двумя переменными презентацияуравнение с двумя переменными презентация
уравнение с двумя переменными презентацияsvetlana797
 
презентация приложение 1
презентация приложение 1презентация приложение 1
презентация приложение 1Irishka Beshteynova
 
Kvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafikKvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafikIvanchik5
 
Простейшие преобразования графиков функций.
Простейшие преобразования графиков функций.Простейшие преобразования графиков функций.
Простейшие преобразования графиков функций.m-nurken
 
Grafik kvadratichnoj funkcii_neravenstva_s_odnoj_p
Grafik kvadratichnoj funkcii_neravenstva_s_odnoj_pGrafik kvadratichnoj funkcii_neravenstva_s_odnoj_p
Grafik kvadratichnoj funkcii_neravenstva_s_odnoj_pИван Иванов
 
Kvadratnaya funkciya i_ee_grafik
Kvadratnaya funkciya i_ee_grafikKvadratnaya funkciya i_ee_grafik
Kvadratnaya funkciya i_ee_grafikIvanchik5
 
контра по матике
контра по матикеконтра по матике
контра по матикеleshiy_AlisA
 
Презентация на тему: Интегрированный урок математика-информатика
Презентация на тему: Интегрированный урок математика-информатикаПрезентация на тему: Интегрированный урок математика-информатика
Презентация на тему: Интегрированный урок математика-информатика2berkas
 
системы счисления
системы счислениясистемы счисления
системы счисленияelen-sh
 
Graficheskij sposob resheniya_sistem_uravnenij
Graficheskij sposob resheniya_sistem_uravnenijGraficheskij sposob resheniya_sistem_uravnenij
Graficheskij sposob resheniya_sistem_uravnenijИван Иванов
 
иррациональные уравнения-4
иррациональные уравнения-4иррациональные уравнения-4
иррациональные уравнения-4son31416
 
построение графиков средствами Microsoft excel
построение графиков  средствами Microsoft excelпостроение графиков  средствами Microsoft excel
построение графиков средствами Microsoft excelaviamed
 
Pokazatelnaya funkciya
Pokazatelnaya funkciyaPokazatelnaya funkciya
Pokazatelnaya funkciyaDimon4
 
Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...
Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...
Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...Theoretical mechanics department
 
Lineaarfunktsioon
LineaarfunktsioonLineaarfunktsioon
Lineaarfunktsioonzanna17
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисленияjula-mam
 

What's hot (20)

Doklad postroeniegraphikov 2
Doklad postroeniegraphikov 2Doklad postroeniegraphikov 2
Doklad postroeniegraphikov 2
 
уравнение с двумя переменными презентация
уравнение с двумя переменными презентацияуравнение с двумя переменными презентация
уравнение с двумя переменными презентация
 
презентация приложение 1
презентация приложение 1презентация приложение 1
презентация приложение 1
 
Kvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafikKvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafik
 
Grafiki trigonometricheskih funkcij
Grafiki trigonometricheskih funkcijGrafiki trigonometricheskih funkcij
Grafiki trigonometricheskih funkcij
 
Простейшие преобразования графиков функций.
Простейшие преобразования графиков функций.Простейшие преобразования графиков функций.
Простейшие преобразования графиков функций.
 
Grafik kvadratichnoj funkcii_neravenstva_s_odnoj_p
Grafik kvadratichnoj funkcii_neravenstva_s_odnoj_pGrafik kvadratichnoj funkcii_neravenstva_s_odnoj_p
Grafik kvadratichnoj funkcii_neravenstva_s_odnoj_p
 
Kvadratnaya funkciya i_ee_grafik
Kvadratnaya funkciya i_ee_grafikKvadratnaya funkciya i_ee_grafik
Kvadratnaya funkciya i_ee_grafik
 
6 клас 3 урок 2
6 клас 3 урок 26 клас 3 урок 2
6 клас 3 урок 2
 
контра по матике
контра по матикеконтра по матике
контра по матике
 
Презентация на тему: Интегрированный урок математика-информатика
Презентация на тему: Интегрированный урок математика-информатикаПрезентация на тему: Интегрированный урок математика-информатика
Презентация на тему: Интегрированный урок математика-информатика
 
системы счисления
системы счислениясистемы счисления
системы счисления
 
Graficheskij sposob resheniya_sistem_uravnenij
Graficheskij sposob resheniya_sistem_uravnenijGraficheskij sposob resheniya_sistem_uravnenij
Graficheskij sposob resheniya_sistem_uravnenij
 
презентация к уроку 1
презентация к уроку 1презентация к уроку 1
презентация к уроку 1
 
иррациональные уравнения-4
иррациональные уравнения-4иррациональные уравнения-4
иррациональные уравнения-4
 
построение графиков средствами Microsoft excel
построение графиков  средствами Microsoft excelпостроение графиков  средствами Microsoft excel
построение графиков средствами Microsoft excel
 
Pokazatelnaya funkciya
Pokazatelnaya funkciyaPokazatelnaya funkciya
Pokazatelnaya funkciya
 
Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...
Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...
Исследование движения ламинарного потока тонкой пленки вязкой несжимаемой жид...
 
Lineaarfunktsioon
LineaarfunktsioonLineaarfunktsioon
Lineaarfunktsioon
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
 

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

задания государственного экзамена по математике 15
задания государственного экзамена по математике 15задания государственного экзамена по математике 15
задания государственного экзамена по математике 15svetlana
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02Computer Science Club
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовТранслируем.бел
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
Задворный б.в. (минск) от идеи к исследованию
Задворный б.в. (минск)   от идеи к исследованиюЗадворный б.в. (минск)   от идеи к исследованию
Задворный б.в. (минск) от идеи к исследованиюЛёха Гусев
 
Задворный б.в. (минск) от идеи к исследованию
Задворный б.в. (минск)   от идеи к исследованиюЗадворный б.в. (минск)   от идеи к исследованию
Задворный б.в. (минск) от идеи к исследованиюЛёха Гусев
 
User Defined Materials in LS-DYNA
User Defined Materials in LS-DYNAUser Defined Materials in LS-DYNA
User Defined Materials in LS-DYNAYury Novozhilov
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpiMichael Karpov
 
задания государственного экзамена по математике 15
задания государственного экзамена по математике 15задания государственного экзамена по математике 15
задания государственного экзамена по математике 15svetlana
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6Andrey Danilchenko
 

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

задания государственного экзамена по математике 15
задания государственного экзамена по математике 15задания государственного экзамена по математике 15
задания государственного экзамена по математике 15
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
Задворный б.в. (минск) от идеи к исследованию
Задворный б.в. (минск)   от идеи к исследованиюЗадворный б.в. (минск)   от идеи к исследованию
Задворный б.в. (минск) от идеи к исследованию
 
Задворный б.в. (минск) от идеи к исследованию
Задворный б.в. (минск)   от идеи к исследованиюЗадворный б.в. (минск)   от идеи к исследованию
Задворный б.в. (минск) от идеи к исследованию
 
User Defined Materials in LS-DYNA
User Defined Materials in LS-DYNAUser Defined Materials in LS-DYNA
User Defined Materials in LS-DYNA
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
1
11
1
 
Intro to Swift techitout
Intro to Swift techitoutIntro to Swift techitout
Intro to Swift techitout
 
2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi
 
Java 8 puzzlers
Java 8 puzzlersJava 8 puzzlers
Java 8 puzzlers
 
задания государственного экзамена по математике 15
задания государственного экзамена по математике 15задания государственного экзамена по математике 15
задания государственного экзамена по математике 15
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6
 

More from Олег Стрекаловский

Когда код «убивает», или зачем нам тестировать наши продукты
Когда код «убивает», или зачем  нам тестировать наши продуктыКогда код «убивает», или зачем  нам тестировать наши продукты
Когда код «убивает», или зачем нам тестировать наши продуктыОлег Стрекаловский
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Олег Стрекаловский
 
"Тёмная и Светлая сторона убеждения людей"
"Тёмная и Светлая сторона убеждения людей""Тёмная и Светлая сторона убеждения людей"
"Тёмная и Светлая сторона убеждения людей"Олег Стрекаловский
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Олег Стрекаловский
 

More from Олег Стрекаловский (6)

Analysis day2
Analysis day2Analysis day2
Analysis day2
 
Защита моей ВКР.
Защита моей ВКР.Защита моей ВКР.
Защита моей ВКР.
 
Когда код «убивает», или зачем нам тестировать наши продукты
Когда код «убивает», или зачем  нам тестировать наши продуктыКогда код «убивает», или зачем  нам тестировать наши продукты
Когда код «убивает», или зачем нам тестировать наши продукты
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
 
"Тёмная и Светлая сторона убеждения людей"
"Тёмная и Светлая сторона убеждения людей""Тёмная и Светлая сторона убеждения людей"
"Тёмная и Светлая сторона убеждения людей"
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
 

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

  • 1. Всероссийская олимпиада школьников по информатике Региональный этап, I тур Разбор задач Андрианов И. А. Стрекаловский О. А. Вологодский государственный университет Факультет прикладной математики, компьютерных технологий и физики Вологда 2015 г. 1/26 Всероссийская олимпиада школьников по информатике
  • 2. «Выбор зала» Пусть длина наименьшей стороны x, а большей — y. Тогда заметим, что должны выполняться следующие ограничения: y ≥ x x ∗ y ≥ A ⇒ y ≥ A/x 2 ∗ (x + y) ≥ C ⇒ y ≥ C/2 − x Таким образом, минимально подходящее y равно: ymin = max{x, ⌈A/x⌉, ⌈C/2 − x⌉} 2/26 Всероссийская олимпиада школьников по информатике
  • 3. «Выбор зала » x ∗ y ≥ B ⇒ y ≥ B/x 2 ∗ (x + y) ≥ D ⇒ y ≥ D/2 − x Таким образом, максимально подходящее y равно: ymax = min{⌊B/x⌋, ⌊D/2 − x⌋} 3/26 Всероссийская олимпиада школьников по информатике
  • 4. «Выбор зала» Переберём меньшую сторону зала до √ B Для каждого x вычислим ymin и ymax и прибавим к ответу max{0, ymax − ymin + 1} 4/26 Всероссийская олимпиада школьников по информатике
  • 5. «Выбор зала» Типичные ошибки Перебор стороны зала до B, вместо перебора до √ B Использование 32-x разрядного типа данных Округления не в ту сторону Не обработали случай ymin > ymax 5/26 Всероссийская олимпиада школьников по информатике
  • 6. Вопросы по задаче? 6/26 Всероссийская олимпиада школьников по информатике
  • 7. «Призы» Воспользуемся префиксными суммами и префиксными максимумами. Научимся за O(1) находить сумму значений ценности для любого отрезка номеров Создадим массив префиксных сумм s. s[i] := (a1 + a2 + . . . + ai) для всех i от 0 до n Это можно сделать за один проход по всем ai Теперь сумма значений ai на отрезке от L до R вычисляется как s[R] − s[L − 1] 7/26 Всероссийская олимпиада школьников по информатике
  • 8. «Призы» Для всех i от 1 до n вычислим массивы префиксных и суффиксных максимумов pref[i] = max{s[k] − s[0], s[k + 1] − s[1], . . . , s[i] − s[i − k]} suff[i] = max{s[i + k − 1] − s[i − 1], s[i + k] − s[i], . . . , s[n] − s[n − k]} pref и suff можно вычислить за линейный проход по s 8/26 Всероссийская олимпиада школьников по информатике
  • 9. «Призы» Теперь для решения задачи достаточно перебрать ход Алисы Если Алиса выбрала отрезок призов [A, A + k − 1], то максимальное значение, которое может достаться Бобу будет max{pref[A − 1], suff[A + k]} Выбрать минимум из всех возможных максимальных выигрышей Боба 9/26 Всероссийская олимпиада школьников по информатике
  • 10. «Призы» Типичные ошибки Неэффективное решение. Много проходов по исходным данным. Выходы за границы массивов Использование 32-x разрядного типа данных 10/26 Всероссийская олимпиада школьников по информатике
  • 11. Вопросы по задаче? 11/26 Всероссийская олимпиада школьников по информатике
  • 12. «Река» Общий подход к хранению информации о предприятии для частичных решений Используем двухсвязный список Для предприятия с номером v будем хранить next[v] — номер следующего предприятия и prev[v] — номер предыдущего предприятия вдоль реки При банкротстве предприятия соответствующий ему элемент списка удаляется, а при разделении он удаляется и в соответствующее место списка вставляются номера новых предприятий 12/26 Всероссийская олимпиада школьников по информатике
  • 13. «Река» Подсчет суммы квадратов длин отрезков реки Будем хранить в ans текущую сумму квадратов длин отрезков реки, а в len[i] — длину отрезка реки i-ого предприятия Считаем ans во время заполнения len по входным данным и выводим ans как ответ до обработки запросов 13/26 Всероссийская олимпиада школьников по информатике
  • 14. «Река» Подсчет суммы квадратов длин отрезков реки Пересчитываем ans и len при событиях При банкротстве предприятия c номером v: ans− = (len[v])2 ans− = (len[next[v]])2 ans− = (len[prev[v]])2 len[prev[v]]+ = len[v]/2 len[next[v]]+ = (len[v] + 1)/2 ans+ = (len[next[v]])2 ans+ = (len[prev[v]])2 При разделении предприятия на два c номером v: ans− = (len[v])2 len[first] = len[v]/2 len[second] = (len[v] + 1)/2 ans+ = (len[first])2 ans+ = (len[second])2 14/26 Всероссийская олимпиада школьников по информатике
  • 15. «Река» Алгоритм работы частичного решения для 1–ой и 2–ой подзадачи Создаём двунаправленный список по входным данным, заполяем ans и len При запросе проходимся по списку и за O(N) для 1–ой подзадачи или за O(1) для 2–ой подзадачи и ищем нужное предприятие Обрабатываем добавление/удаление предприятий в списке, пересчитываем ans и len за O(1) 15/26 Всероссийская олимпиада школьников по информатике
  • 16. «Река» Структуры данных частичных решений 3–ей подзадачи Происходят только банкротства ⇒новых предприятий не создается. Для поиска и удаления i–ого предприятия за O(ln N) можно использовать структуры данных: Дерево отрезков1 Дерево Фенвика2 1 http://e-maxx.ru/algo/segment_tree 2 http://e-maxx.ru/algo/fenwick_tree 16/26 Всероссийская олимпиада школьников по информатике
  • 17. «Река» Структуры данных для полного решения Декартово дерево по неявному ключу3 Удаление, вставка и поиск i–ого элемента за O(ln N) SQRT–декомпозиция4 Удаление, вставка и поиск i–ого элемента за O( √ N) 3 http://e-maxx.ru/algo/treap 4 http://e-maxx.ru/algo/sqrt_decomposition 17/26 Всероссийская олимпиада школьников по информатике
  • 18. «Река» Типичные ошибки Неэффективное решение. Много проходов по исходным данным, копирование массивов Отсутствие контроля при поиске предыдущего и следующего предприятия (их может не быть) Использование 32-x разрядного типа данных 18/26 Всероссийская олимпиада школьников по информатике
  • 19. Вопросы по задаче? 19/26 Всероссийская олимпиада школьников по информатике
  • 20. «Чемпионат по поиску в сети Меганет» Основные идеи решения: Заметим, что имя сервера и имя раздела состоят не более чем из 5и частей каждое ⇒ для каждого адреса существует лишь небольшое число фильтров, под которые он потенциально может подходить Разместив строки с фильтрами в структуре данных, в которой возможен быстрый поиск и добавление за O(ln N) или O(1), мы можем быстро проверять наличие фильтра Префиксное дерево (Trie)5 Стандартные структуры данных в Java, С++, Python, C# Самописные хэш–таблицы для быстрого поиска строк В решении следует учитывать возможность появления фильтров–дубликатов во входных данных 5 https://en.wikipedia.org/wiki/Trie 20/26 Всероссийская олимпиада школьников по информатике
  • 21. «Чемпионат по поиску в сети Меганет» Формирование списка фильтров для сервера Пусть дан сервер "a.b.c.d.e". Возможны следующие варианты: a.b.c.d.e *.a.b.c.d.e *.b.c.d.e *.c.d.e *.d.e *.e Итого 6 вариантов фильтров для сервера 21/26 Всероссийская олимпиада школьников по информатике
  • 22. «Чемпионат по поиску в сети Меганет» Формирование списка фильтров для пути в сервере Пусть в сервере задан путь "a/b/c/d/e". Возможны следующие варианты: a/b/c/d/e a/b/c/d/e/* a/b/c/d/* a/b/c/* a/b/* a/* /* Итого 7 вариантов фильтров для пути в сервере 22/26 Всероссийская олимпиада школьников по информатике
  • 23. «Чемпионат по поиску в сети Меганет» Итоговый алгоритм: Сохраняем все фильтры в структуру данных Разделяем строку на название сервера и путь Для каждого названия сервера и пути строим список подходящих фильтров Перебираем все комбинации "фильтр для сервера"+"фильтр для пути" и ищем эту строку среди фильтров 23/26 Всероссийская олимпиада школьников по информатике
  • 24. «Чемпионат по поиску в сети Меганет» Типичные ошибки Неэффективное хэширование при поиске строк Неучитывание фильтров–дубликатов 24/26 Всероссийская олимпиада школьников по информатике
  • 25. «Чемпионат по поиску в сети Меганет» Типичные ошибки Неэффективное хэширование при поиске строк Неучитывание фильтров–дубликатов Решение на C++ Неэффективая работа при использовании стандартного контейнера map/unordered_map для типа string Медленный ввод-вывод данных через cin и cout 24/26 Всероссийская олимпиада школьников по информатике
  • 26. «Чемпионат по поиску в сети Меганет» Типичные ошибки Неэффективное хэширование при поиске строк Неучитывание фильтров–дубликатов Решение на C++ Неэффективая работа при использовании стандартного контейнера map/unordered_map для типа string Медленный ввод-вывод данных через cin и cout Решение на Java На стандартном HashMap решение проходит без дополнительной оптимизации 24/26 Всероссийская олимпиада школьников по информатике
  • 27. Вопросы по задаче? 25/26 Всероссийская олимпиада школьников по информатике
  • 28. Заключение Спасибо за внимание! 26/26 Всероссийская олимпиада школьников по информатике