Download - Разбор задач
![Page 2: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/2.jpg)
Задача А. Время года
Условие
Дан номер месяца, определить время года.
Ограничение
N < 101
![Page 3: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/3.jpg)
Задача А. Время года
Решение
Для решения задачи достаточно воспользоваться оператором ветвления if.
![Page 4: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/4.jpg)
Задача В. Футбол
Условие
Дана сумма чисел после каждого изменения счёта в матче. Найти количество забитых мячей.
Ограничение
S < 103 + 1
![Page 5: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/5.jpg)
Задача В. Футбол
Наблюдение
Очевидно, что после каждого забитого мяча, сумма счёта увеличивается на 1: 1+0=1, 1+1=2, 1+2=3, 2+2=4, 2+3=5.
Таким образом мы имеем дело с арифметической прогрессией.
![Page 6: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/6.jpg)
Задача В. Футбол
Решение
Сумма арифметической прогрессии равна:
S = (1 + n) * n / 2
Откуда n = (sqrt(1 + 8S) – 1) / 2
![Page 7: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/7.jpg)
Задача С. Игра с пешкой
Условие
Двое играют на квадратной доске. Определить гарантированный выигрыш первого игрока.
Ограничение
N < 101
![Page 8: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/8.jpg)
Задача С. Игра с пешкой
Идея решения
Воспользуемся динамическим программированием. Будем вести подсчёты, начиная с последнего хода.
Если ход из mi,j совершает второй
игрок, то он выберет клетку со значением равным min(m
i+1,j, m
i,j-1).
Если первый, то – максимум.
![Page 9: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/9.jpg)
Задача С. Игра с пешкой
Продолжение
Определять очерёдность хода можно по чётности суммы номеров столбца и строки текущей клетки.
Время работы алгоритма O(N2).
![Page 10: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/10.jpg)
Задача D. Доказательство теоремы
Условие
Дано дерево. Надо выбрать минимальное множество вершин (включая первую), чтобы у каждой выбранной вершины выбранными было не меньше половины потомков.
Ограничение
N < 104 + 1
![Page 11: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/11.jpg)
Задача D. Доказательство теоремы
Решение
Применим к графу топологическую сортировку и будем рассматривать вершины в этом порядке.
Тогда, при рассмотрении вершины i, все её потомки будут уже рассмотрены. А значит не трудно составить из них список с минимальной суммой.
![Page 12: Разбор задач](https://reader036.vdocuments.pub/reader036/viewer/2022070319/557f7bf2d8b42aab198b4ad3/html5/thumbnails/12.jpg)
Спасибо за внимание
Ваши вопросы?