Разбор задач
Post on 16-Jun-2015
325 Views
Preview:
DESCRIPTION
TRANSCRIPT
Задача А. Время года
Условие
Дан номер месяца, определить время года.
Ограничение
N < 101
Задача А. Время года
Решение
Для решения задачи достаточно воспользоваться оператором ветвления if.
Задача В. Футбол
Условие
Дана сумма чисел после каждого изменения счёта в матче. Найти количество забитых мячей.
Ограничение
S < 103 + 1
Задача В. Футбол
Наблюдение
Очевидно, что после каждого забитого мяча, сумма счёта увеличивается на 1: 1+0=1, 1+1=2, 1+2=3, 2+2=4, 2+3=5.
Таким образом мы имеем дело с арифметической прогрессией.
Задача В. Футбол
Решение
Сумма арифметической прогрессии равна:
S = (1 + n) * n / 2
Откуда n = (sqrt(1 + 8S) – 1) / 2
Задача С. Игра с пешкой
Условие
Двое играют на квадратной доске. Определить гарантированный выигрыш первого игрока.
Ограничение
N < 101
Задача С. Игра с пешкой
Идея решения
Воспользуемся динамическим программированием. Будем вести подсчёты, начиная с последнего хода.
Если ход из mi,j совершает второй
игрок, то он выберет клетку со значением равным min(m
i+1,j, m
i,j-1).
Если первый, то – максимум.
Задача С. Игра с пешкой
Продолжение
Определять очерёдность хода можно по чётности суммы номеров столбца и строки текущей клетки.
Время работы алгоритма O(N2).
Задача D. Доказательство теоремы
Условие
Дано дерево. Надо выбрать минимальное множество вершин (включая первую), чтобы у каждой выбранной вершины выбранными было не меньше половины потомков.
Ограничение
N < 104 + 1
Задача D. Доказательство теоремы
Решение
Применим к графу топологическую сортировку и будем рассматривать вершины в этом порядке.
Тогда, при рассмотрении вершины i, все её потомки будут уже рассмотрены. А значит не трудно составить из них список с минимальной суммой.
Спасибо за внимание
Ваши вопросы?
top related