Введение
Глава 1. Начало работы
1.1. Начало работы с автоматической тестирующей системой (robot judge)
1.1.1. Автоматический судья Programming Challenges
1.1.2 Автоматический судья Universidad de Valladolid
1.1.3. Ответы тестирующих систем (судей)
1.2. Выбор оружия
1.2.1. Языки программирования
1.2.2. Чтение наших программ
1.2.3. Стандартный ввод/вывод
1.3. Советы по программированию
1.4. Элементарные типы данных
1.5. О задачах
1.6. Задачи
1.6.1. Задача 3n + 1
1.6.2. Сапер
1.6.3. Путешествие
1.6.4. LCD-дисплей
1.6.5. Графический редактор
1.6.6. Интерпретатор
1.6.7. Проверка на шах
1.6.8. Австралийское голосование
1.7. Подсказки
1.8. Замечания
Глава 2. Структуры данных
2.1. Элементарные структуры данных
2.1.1. Стеки (Stacks)
2.1.2. Очереди (Queues)
2.1.3. Словари (Dictionaries)
2.1.4. Очереди по приоритету (Priority queues)
2.1.5. Множества (Sets)
2.2. Объектные библиотеки
2.2.1. Стандартная библиотека шаблонов C++ (C++ Standard Template Library)
2.2.2. Пакет java.util для Java
2.3. Пример разработки программы: сборы на войну
2.4. Что касается колоды
2.5. Строковый ввод/вывод
2.6. Победа на войне
2.7. Тестирование и отладка
2.8. Задачи
2.8.1. Jolly Jumpers
2.8.2. Руки в покере
2.8.3. Харталы (Hartals)
2.8.4. Дешифратор
2.8.5. Расположить по порядку
2.8.6. Числа Эрдеша
2.8.7. Табло соревнований
2.8.8. Yahtzee
2.9. Подсказки
2.10. Замечания
Глава 3. Строки
3.1. Коды символов
3.2. Представление строк
3.3. Пример разработки программы: корпоративные переименования
3.4. Поиск шаблонов
3.5. Управление строками
3.6. Завершение программы
3.7. Функции библиотеки для работы со строками
3.8. Задачи
3.8.1. WERTYU
3.8.2. Где Waldorf?
3.8.3. Обычная перестановка
3.8.4. Дешифратор II
3.8.5. Автоматизированное судейство
3.8.6. Осколки файлов
3.8.7. Дублеты
3.8.8. Fmt
3.9. Подсказки
3.10. Замечания
Глава 4. Сортировка
4.1. Приложения сортировки
4.2. Алгоритмы сортировки
4.3. Пример разработки программы: рейтинг ухажеров
4.4. Функции библиотеки сортировки
4.5. Рейтинг ухажеров
4.6. Задачи
4.6.1. Семья Вито
4.6.2. Стопки оладий
4.6.3. Мост
4.6.4. Подремать подольше
4.6.5. Задача сапожника
4.6.6. CDVII
4.6.7. Сортировка Шелла
4.6.8. Футбол
4.7. Подсказки
4.8. Замечания
Глава 5. Арифметика и алгебра
5.1. Машинная арифметика
5.2. Высокоточные целые числа
5.3. Высокоточная арифметика
5.4. Системы счисления и соответствующие переходы
5.5. Вещественные числа
5.5.1. Работа с вещественными числами
5.5.2. Простые дроби
5.5.3. Десятичные дроби
5.6. Алгебра
5.6.1. Работа с полиномами
5.6.2. Нахождение корней
5.7. Логарифмы
5.8. Математические библиотеки
5.9. Задачи
5.9.1. Начала арифметики
5.9.2. Изменение порядка и сложение
5.9.3. Дилемма археолога
5.9.4. Единицы
5.9.5. Игра в умножения
5.9.6 Коэффициенты полинома
5.9.7. Числовая система Штерна-Броко (Stern-Brocot)
5.9.8. Попарно суммируемые числа
5.10. Подсказки
5.11. Замечания
Глава 6. Комбинаторика
6.1. Базовые методики счета
6.2. Рекуррентные соотношения
6.3. Биномиальные коэффициенты
6.4. Другие счетные последовательности
6.5. Рекурсия и индукция
6.6. Задачи
6.6.1. Сколько чисел?
6.6.2. Сколько частей земли?
6.6.3. Счет
6.6.4. Выражения
6.6.5. Нумерация полного дерева
6.6.6. Монах-математик
6.6.7. Самоописывающая последовательность
6.6.8. Шаги
6.7. Подсказки
6.8. Замечания
Глава 7. Теория чисел
7.1. Простые числа
7.1.1. Поиск простых чисел
7.1.2. Подсчет простых чисел
7.2. Делимость
7.2.1. Наибольший общий делитель
7.2.2. Наименьшее общее кратное
7.3. Арифметика остатков
7.4. Сравнимости
7.4.1. Операции со сравнимостями
7.4.2. Решение линейных сравнимостей
7.4.3. Диофантовы уравнения
7.5. Библиотеки по теории чисел
7.6. Задачи
7.6.1. Света, больше света
7.6.2. Числа Кармайкла
7.6.3. Задача Евклида
7.6.4. Делители факториалов
7.6.5. Сумма четырех простых чисел
7.6.6. Числа Смита
7.6.7. Шарики
7.6.8. Переупаковка
7.7. Подсказки
7.8. Замечания
Глава 8. Поиск с возвратом
8.1. Поиск с возвратом
8.2. Построение всех подмножеств
8.3. Построение всех перестановок
8.4. Пример разработки программы: задача восьми ферзей
8.5. Поиск с отсечением вариантов
8.6. Задачи
8.6.1. Слоны
8.6.2. Задача про пятнашки
8.6.3. Шеренга
8.6.4. Станции техобслуживания
8.6.5. Перетягивание каната
8.6.6. Эдемский сад
8.6.7. Color hash
8.6.8. Больший квадрат
8.7. Подсказки
8.8. Замечания
Глава 9. Обходы графов
9.1. Особенности графов
9.2. Структуры данных для графов
9.3. Обход графа: в ширину
9.3.1. Поиск в ширину
9.3.2. Использование обхода
9.3.3. Нахождение путей
9.4. Обход графа: в глубину
9.4.1. Обнаружение циклов
9.4.2. Связные компоненты
9.5. Топологическая сортировка
9.6. Задачи
9.6.1. Раскраска двумя цветами
9.6.2. Колеса
9.6.3. Экскурсовод
9.6.4. Лабиринт из косых
9.6.5. Лесенки ступенек редактирования
9.6.6. Башни из кубиков
9.6.7. От заката до рассвета
9.6.8 И снова ханойские башни!
9.7. Подсказки
Глава 10. Графовые алгоритмы
10.1. Теория графов
10.1.1. Свойства степеней
10.1.2. Связность
10.1.3. Циклы в графах
10.1.4. Планарные графы
10.2. Минимальные остовные деревья
10.3. Кратчайшие пути
10.3.1. Алгоритм Дейкстры (Dijkstra)
10.3.2. Кратчайшие пути между всеми парами вершин
10.4. Потоки в сети и паросочетания в двудольных графах
10.5. Задачи
10.5.1. Веснушки
10.5.2. Ожерелье
10.5.3. Пожарное депо
10.5.4. Железные дороги
10.5.5. Война
10.5.6. Экскурсовод
10.5.7. Большой обед
10.5.8. Задача про постановщика задач
10.6. Подсказки
Глава 11. Динамическое программирование
11.1. Не нужно жадничать
11.2. Стоимость редактирования
11.3. Восстановление пути
11.4. Варианты стоимости редактирования
11.5. Пример разработки программы: оптимизация лифта
11.6. Задачи
11.6.1. Умнее ли больший?
11.6.2. Различные подпоследовательности
11.6.3. Веса и меры
11.6.4 Однонаправленная задача коммивояжера
11.6.5. Распил брусьев
11.6.6. Заполнение парома
11.6.7. Палочки для еды
11.6.8. Приключения в дороге: часть IV
11.7. Подсказки
11.8. Замечания
Глава 12. Сетки
12.1. Прямолинейные сетки
12.1.1. Обход
12.1.2. Двойственные графы и представления
12.2. Треугольные и гексагональные сетки
12.2.1. Треугольные решетки
12.2.2. Гексагональные решетки
12.3. Пример разработки программы: Вес тарелки
12.4. Упаковка кругов
12.5. Широта и долгота
12.6. Задачи
12.6.1. Муравей на доске
12.6.2. Моноцикл
12.6.3. Звезда
12.6.4. Пчела Майя
12.6.5. Ограбление
12.6.6. (2/3/4)-D Квад/Прям/Куб...?
12.6.7. Дермубский треугольник
12.6.8. Авиалинии
12.7. Подсказки
Глава 13. Геометрия
13.1. Прямые
13.2. Треугольники и тригонометрия
13.2.1. Прямоугольные треугольники и теорема Пифагора
13.2.2. Тригонометрические функции
13.2.3. Решение треугольников
13.3. Окружности
13.4. Пример разработки программы: быстрее пули
13.5. Библиотеки тригонометрических функций
13.6. Задачи
13.6.1. Суслик и собака
13.6.2. Проблема с канатами в Канатово
13.6.3. Рыцари Круглого стола
13.6.4. Шоколадное печенье
13.6.5. Именинный пирог
13.6.6. Самая большая/маленькая коробка...
13.6.7. Это интегрирование?
13.6.8. Насколько она большая?
13.7. Подсказки
Глава 14. Вычислительная геометрия
14.1. Отрезки и пересечения
14.2. Многоугольники и вычисления углов
14.3. Выпуклые оболочки
14.4. Триангуляция: алгоритмы и смежные задачи
14.4.1. Алгоритм Ван Гога
14.4.2 Подсчет площади
14.4.3. Относительное положение точки
14.5. Алгоритмы для сеток
14.5.1. Запросы на значение области...14.5.2. Решетчатые многоугольники и теорема Пика
14.6. Геометрические библиотеки
14.7. Задачи
14.7.1. Пасем первокурсников
14.7.2. Задача о ближайших точках
14.7.3. Резня бензопилой
14.7.4. Теплее - холоднее
14.7.5. Useless Tile Packers
14.7.6. Радиолокация
14.7.7. Деревья моего острова
14.7.8. Вкусное молоко
14.8. Подсказки
Приложение А
A.1. ACM International Collegiate Programming Contest
A.1.1. Подготовка
A.1.2. Стратегия и тактика
A.2. International Olympiad in Informatics (Международная олимпиада по информатике)
A.2.1. Участие
A.2.2. Формат
A.2.3. Подготовка
A.3. Topcoder.com
A.4. Аспирантура
A.5. Благодарности за задачи
Послесловие В. М. Кирюхина
Список рекомендуемой литературы
Предметный указатель