Анализ заданий, предлагаемых на олимпиадах городского (районного) уровня показывает, что в них чаще всего присутствуют следующие темы:

1) теория чисел;

2) последовательности;

3) организация перебора;

4) задачи с геометрическим содержанием;

5) динамическое программирование.

Примерами заданий каждого типа являются:

1. Вывести представление целого числа N в виде произведения простых чисел.

2. В последовательности чисел a_{1}, a_{2} , a_{3} ,… задан первый член, а остальные вычисляются по формуле a_{i}=(a_{i-1})^{2}\, mod\,10000. Найти N -й член последовательности.

3. Даны N целых чисел X_{1}, X_{2}, …,X_{N}.Расставить между ними знаки «+» и «–» так, чтобы значение получившегося выражения было равно заданному целому S .

4. В декартовой системе координат на плоскости заданы координаты вершин треугольника и ещё одной точки. Определить, принадлежит ли эта точка треугольнику.

5. В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку ( N , N ), чтобы сумма цифр в клетках, через которые он пролегает, была минимальной; из любой клетки ходить можно только вниз или вправо.

На зональных этапах добавляются задания на «длинную» арифметику. Например:

6. Для натуральных чисел a и n вычислить a^{2},где 1\leq a\leq9 1\leq n\leq7000 .

На краевом этапе, как правило, всегда присутствуют задачи на графы с организацией поиска.

7. Пещера представлена кубом, разбитым на N частей по каждому измерению (т.е. из N^{3} кубических клеток). Каждая клетка может быть или пустой, или полностью заполненной камнем. Исходя из положения спелеолога в пещере, требуется найти, какое минимальное количество перемещений по клетка ему требуется, чтобы выбраться на поверхность. Переходить из клетки в клетку можно, только если они обе свободны и имеют общую грань.

План подготовки к Российским олимпиадам по информатике

Раздел 1. Математические основы программирования

Раздел 2. Техника программирования

1. Основы языка программирования (Паскаль, Си). Переменные и простейшие типы данных, размеры типов. Линейные программы. Условные операторы. Циклы. Процедуры и функции. Сложные типы данных (массивы, строки, записи, указатели, файлы).

2. Массивы. Одномерные массивы. Двумерные массивы(матрицы). Многомерные массивы.

3. Строки. Элементы лексического и синтаксического разбора. Операции над строками. Лексемы, подсчет лексем различных типов. Выделение чисел из строки.

4. Работа с файлами. Чтение и запись в текстовый файл. Преобразование полученных из файла данных в удобную структуру. Работа с типизированными файлами. Нетипизированные файлы. Буферизация ввода.

5. Рекурсия. Математические функции, задаваемые рекурсивно. Примеры рекурсивных подпрограмм. Проблема остановки рекурсии. Замена рекурсии итерацией.

6. "Длинная" арифметика. Хранения в программе чисел, которые не вмещаются в стандартные типы. Арифметические операции над "длинными" числами. "Длинные" числа с десятичной частью. Извлечение корня с заданной точностью.

7. Хранение информации в динамической памяти. Хранение набора данных в линейных списках. Вставка в список, удаление из списка, поиск элемента в списке. Двусвязные списки. Понятия структур данных стека, кольца,очереди, дека; реализация их с помощью динамической памяти. Двоичные деревья. Деревья с неопределенным числом потомков. Хранение больших массивов.

Раздел 3. Алгоритмы, методы и принципы решения задач

1. Понятие сложности алгоритма. Определение сложности.Классы задач P и NP. NP-полные задачи.

2. Алгоритмы поиска и сортировки. Поиск элемента в неупорядоченном массиве. Двоичный поиск по ключу в упорядоченном массиве (дихотомия). Поиск методом Фибоначчи. Поиск в упорядоченном n-мерном массиве. Поиск k-го по величине элемента массива. Простые методы сортировки ("пузырек", "выборка", "вставка","подсчет"). Быстрые методы ("быстрая", "слиянием","пирамидальная"), балансировка двоичных деревьев. Сортировка методом черпака.

3. Решение задач методом перебора вариантов. Применение рекурсии для перебора. Генерация сочетаний, размещений, перестановок и булеана множества. Полный перебор. Отсечение вариантов (эвристики). Метод ветвей играниц.

4. Вычислительная геометрия и численные методы. Длина отрезка. Уравнение прямой. Скалярное и векторное произведение. Точка пересечения отрезков. Принадлежность точки фигуре на плоскости (например, треугольнику). Площадь выпуклого многоугольника. Выпуклая оболочка множества точек: алгоритмы Грэхема, Джарвиса, "разделяй и властвуй". Ближайшая пара точек. Метод Гаусса для решения системы линейных уравнений. Нахождение решения уравнения.

5. Принцип динамического программирования. Понятие, применимость. Сравнение с перебором.

6. Жадные алгоритмы. Понятие, применимость. Сравнение с перебором и динамическим программированием.

7. Теория графов. Алгоритмы на графах. Понятие графа. Определения теории графов. Структуры данных для представления графа в программе. Алгоритмы обхода графа (поиски в ширину и глубину). Лабиринт (метод волны). Эйлеров цикл. Кратчайший путь во взвешенном графе (алгоритмы Дейкстры и Минти). Транзитивное замыкание графа (алгоритм Флойда-Уоршилла). Минимальное остовное дерево (алгоритмы Прима и Краскала). Топологическая сортировка графа.Потоки в сетях (алгоритм Форда-Фалкерсона). Паросочетания в двудольном графе (метод удлиняющей цепочки, потоковое решение). Задача о назначениях, назначения на узкое место (венгерский алгоритм). Игры на графах. Раскраска графа. Уложение графа на плоскости. Сильная связность и двусвязность графа. Изоморфизм графов. K-клика. Гамильтонов цикл.

8. Лексический и синтаксический анализ. Задача "Калькулятор". Синтаксические диаграммы. Формы Бэкуса-Наура. Стековая и рекурсивная модель синтаксического разбора. Конечные автоматы. Грамматики.

9. Задачи с "изюминками"

Раздел 4. Олимпиады по информатике

1. Правила проведения олимпиад по программированию

2. Типичные ошибки и отладка программ

3. Приемы олимпиадчика

Статья взята с сайта g6prog.narod.ru

Modifié le: dimanche 18 novembre 2012, 20:30