Анкета поступающего в олимпиадный кружок по программированию

                

Вопрос

Ответ

1

Фамилия, имя, отчество

 

2

Факультет, группа

 

3

E-Mail, телефон (Если Вы не хотите получать рассылку с расписанием занятий кружка, укажите это)

 

 

 

4

Школа

 

 

5

Занимались ли ранее программированием (кроме школьной программы)? Если да, то где?

 

 

 

 

6

Есть ли у Вас награды в олимпиадах и конкурсах (по программированию, математике, физике, других)? Если да, то какие?

 

 

 

 

 

 

 

 

 

 

7

Какие языки программирования Вы предпочитаете?

 

8

Наиболее удобное для Вас время занятий для лекции (2 часа) и для тренировки (3,5 часа).

 

 

 

 

 

9

Если Вы участвуете в соревнованиях TopCoder, то какой у вас handle на сайте http://topcoder.com/tc?

 

 

 

10

Как Вы узнали о нашем кружке (от друзей, из объявлений, участвовали в наших соревнованиях, занимались у наших тренеров)?

 

 

 

 

 

11

Что для Вас приоритетней в занятиях кружка? (приобретение полезных навыков, более глубоких знаний computer science, победы в соревнованиях, общения с друзьями, единомышленниками, поездки на соревнования, контакты с работодателями).

 

 

 

 

 

Обязательно заполните тематическую анкету с другой стороны!!!


В этом разделе вам предлагается оценить свои знания по различным разделам алгоритмического программирования. Это необходимо для как можно более адекватного распределения участников кружка на группы. Обратите внимание, что все участники попадут в какую-либо группу, поэтому в ваших интересах предоставить как можно более точную информацию, чтобы группа соответствовала вашему уровню.

 

Оценка знаний производится по 5-балльной шкале:

1 – никогда не слышал про такое

2 – что-то слышал, но очень поверхностно

3 – что-то знаю, если поднапрягусь, смогу разобраться

4 – более-менее знаю, умею применять, но есть, куда улучшать знания

5 – знаю отлично и готов с ходу объяснить это кому-то еще

 

Проставьте, пожалуйста, ваши оценки своих знаний по следующим разделам:

Раздел

Оценка

Язык программирования: процедуры, функции, массивы, циклы.

 

Язык программрования: работа с файлами.

 

Язык программирования: сложные конструкции и встроенные библиотеки алгоритмов (напр., STL в C++).

 

Рекурсия и рекурсивные алгоритмы.

 

Оценка сложности алгоритма, теорема о сложности рекурсивных алгоритмов.

 

Квадратичные методы сортировки (пузырек, вставка и другие).

 

Логарифмические методы сортировки (слияние, QSort, HeapSort и другие).

 

Двоичный поиск и его использование для решения задач (двоичный поиск по массиву, дихотомия).

 

Троичный поиск.

 

Линейные структуры данных (списки, очереди, стеки, хранение в массиве и с помощью указателей).

 

Простейшие алгоритмы на графах (поиск в ширину и в глубину).

 

Простейшие применения поиска в глубину (компоненты связности, топологическая сортировка).

 

Более сложные применения поиска в глубину (компоненты двусвязности и сильной связности, мосты, точки сочленения).

 

Алгоритмы нахождения кратчайших путей (Дейкстра, Форд-Беллман, Флойд) и поиска остовных деревьев (Прим, Краскал).

 

Длинная арифметика.

 

Перебор комбинаторных объектов (перестановки, скобочные последовательности, подмножества и т.д.). Поиск следующего и предыдущего объекта, поиск по номеру, поиск номера, подсчет числа объектов.

 

Расстояния между точками, прямыми и отрезками на плоскости. Пересечение прямых, лучей и отрезков.

 

Окружности и работа с ними (пересечение и т.д.).

 

Проверка принадлежности точки многоугольнику. Алгоритм с использованием случайных прямых и целочисленный алгоритм с использованием горизонтальной прямой.

 

Алгоритмы поиска выпуклой оболочки (Джарвис, Грехем). Заворачивание подарка.

 

Метод движущейся прямой (сканирования контура).

 

Рекурсивный спуск.

 

Грамматики и конечные автоматы.

 

Алгоритмы поиска подстрок за линейное время. Поиск многих подстрок (Ахо-Корасик).

 

Динамическое программирование (простейшие случаи).

 

Динамическое программирование по подмножествам и по профилю.

 

Суффиксные деревья, массивы и автоматы.

 

Алгоритмы сжатия данных (LZW, LZSS).

 

Быстрое умножение (Карацуба, Фурье).

 

Игры. Анализ игр на ациклических графах.

 

Анализ игр на циклических графах. Ретроанализ.

 

Функция Гранди и функция Смита.

 

Игры на матрицах.

 

Эффективная реализация системы непересекающихся множеств.

 

Сбалансированные деревья (декартовы, АВЛ, красно-черные).

 

Деревья отрезков. Операции на отрезках. Дерево Фенвика (в том числе многомерное).

 

Декартово дерево по неявному ключу.

 

Паросочетания и потоки – простейшие алгоритмы (Куна, Форда-Фалкерсона, масштабирование).

 

Паросочетания и потоки – высокопроизводительные алгоритмы.

 

Поток минимальной стоимости. Задача о назначениях.

 

Задача о наименьшем общем предке. Эффективные методы решения.

 

Теоретико-числовые алгоритмы (решето Эратосфена, эвристика Полларда, тест Миллера-Рабина).

 

Вычисления по модулю (нахождение обратного, возведение в степень, извлечение корня произвольной степени с помощью первообразных корней и с помощью алгоритма Берлекэмпа). RSA-шифрование.

 

Решение систем линейных уравнений: метод Гаусса, ортогонализация Грама-Шмидта.

 

Симплекс-метод.

 

С другой стороны необходимо заполнить личную информацию.