1 / 21

Соревнования по программированию

Соревнования по программированию. Лекция 1. Добро пожаловать. Введение Соревнования по программированию Как практиковаться Примеры решения задач Оценки. Тренеры. Официально : Беляев Артем Так же : Мансуров Артур Федотов Сергей Гуринов Андрей Мохов Андрей Алексеев Арсений.

Download Presentation

Соревнования по программированию

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Соревнования по программированию Лекция 1

  2. Добро пожаловать • Введение • Соревнования по программированию • Как практиковаться • Примеры решения задач • Оценки

  3. Тренеры • Официально: Беляев Артем • Так же: • Мансуров Артур • Федотов Сергей • Гуринов Андрей • Мохов Андрей • Алексеев Арсений

  4. Зачем нужны соревнования? • Можно выучить… • Много полезных алгоритмов, математические идеи • Как быстро и аккуратно запрограммировать и отладить • Как работать в команде • А потом можно тренироваться, практиковаться в собеседованиях • В конце концов - это прикольно!

  5. Требования к участникам • Начальные навыки в программировании • Должны программировать на c++, java • Хорошие знания математики • И самое важное - желания обучаться

  6. Темы лекций и занятий • Введение • Математика в программировании • Структуры данных • Динамическое программирование • Комбинаторика • Алгоритмы на графах • Задачи поиска кратчайших путей • Сетевые потоки • Геометрические алгоритмы • Алгоритмы на строках

  7. Соревнования по программированию • Соревнования КРСУ • ACM-ICPC • NEERC Regionals • Мировой финал • Online Соревнования • TopCoder, Codeforces • Google Code Jam • И много много других…

  8. Как тренироваться • USACO Training Program • Online Judges • Еженедельные тренировочные соревнования

  9. USACO Training Program • http://ace.delos.com/usacogate • Детальное описание базовых алгоритмов и пути решение задач • Хорошие задачи • Автоматизирования система тестирования

  10. Online Judges • Веб сайты • Сайты, где проходят реальные соревнования • И там где можно получить быстрый ответ • Несколько хороших сайтов: • Peking OJ • CodeforcesOJ • TimusOJ • UVa OJ

  11. Еженедельный практический контест • Уточним удобное время (скорее всего пятница с 12.00- до упора) • Возможны бонусы! • Можно задавать вопросы • Реальные задачи с разных соревнований • Надо придумать общую рассылку и группу например на facebook

  12. Решение задач • Прочитать задание, выделить область • Проверить ввод/вывод! • Выделить сущность задачи • Разработать алгоритм • Часто самый сложный • Реализовать и отладить • Отослать • AC! • Если нет, то вернуться к шагу 4

  13. Пример решения задачи • POJ 1000: Задача A+B • Вход: Два целых числа 𝑎, 𝑏 разделенных пробелами • Ограничения: 0 ≤ 𝑎, 𝑏 ≤ 10 • На выходе: 𝑎 + 𝑏

  14. POJ 1000 Решение на C/C++ #include<stdio.h> int main() { inta, b; scanf("%d%d", &a, &b); printf("%d\n", a + b); return 0; }

  15. Другой пример • POJ 1004: Финансовый менеджмент • Вход: 12 вещественных чисел по одному на строке • Выход: Среднее данных чисел • Чуть сложнее чем POJ 1000…

  16. POJ 1004 Решение на C/C++ #include<stdio.h> intmain() { double sum = 0, buf; for(inti = 0; i < 12; i++) { scanf("%lf", &buf); sum += buf; } printf("$%.2lf\n", sum / 12.0); return 0; }

  17. Есть над чем поразмыслить… • Что если числа очень большие? • Не все ограничения очевидны • Скрытые ограничения почти всегда “разумны” • Всегда нужно думать о худших случаях, крайних случаях, и т.д.

  18. Оценки • Вы можете • Решить все задания по курсу на POJ и показать результат • Или, УСПЕШНО участвовать более чем в 4 еженедельных контекстах • Если есть опыт, то лучше сразу участвовать и в соревнованиях и решать задачи • Это всегда лучше

  19. Stanford ACM Team Notebook • http://stanford.edu/~liszt90/acm/notebook.html • Реализацию множества алгоритмов можно выучить • Политика использования готовых алгоритмов: • Не КОПИРОВАТЬ! • Как минимум самому все перенабрать! • Если есть ошибки или улучшения, можете спрашивать

  20. Ссылки • Материал курса: • http://cs97si.stanford.edu • http://olymp.krsu.edu.kg • Stanford ACM Team Notebook: • http://stanford.edu/~liszt90/acm/notebook.html • Peking Online Judge: http://poj.org • USACO Training Gate: • http://ace.delos.com/usacogate • Online discussion board (ACM ICPC Kyrgyzstan): • https://www.facebook.com/groups/219510421522554/

  21. Блок заданий 1 • Блок заданий1: Упражнения по программированию • 1000 A+B Problem (0) • 1004 Financial Management (0) • 1003 Hangover (1) • 1007 DNA Sorting (2) • 2136 Vertical Histogram (2) • 2140 Herd Sums (3) • 1504 Adding Reversed Numbers (3) • 1806 Manhattan 2025 (4) • 1001 Exponentiation (5) • 1922 Ride to School (5) • 3251 Big Square (6, challenge problem) • 1403 Hotline (9, challenge problem)

More Related