Пам’ятка для тих, хто бере участь у Всеукраїнських та Всесвітніх олімпіадах з програмування
- Вміти працювати з графами (хоча б вміти реалізовувати алгоритм Дейкстри – для пошуку найкоротшого шляху), включаючи роботу зі зв’язними, незв’язними, планарними графами, деревами.
- Вміти програмувати задачі по матричних іграх.
- Вміти працювати з великими числами (типу 3000!=1*2*…*3000). Підказка: це дуже легко реалізовується в Python (в багатьох інших мовах програмування можна познаходити готові фрагменти коду для реалізацією роботи з великими числами).
- Пам’ятати рекурсію.
- Мати під рукою алгоритми пошуку або знати відповідні функції.
- Мати під рукою алгоритми сортування або знати відповідні функції.
- Знати математику, в першу чергу теорію чисел. Це ознаки подільності, факторизація (розклад цілого числа на добуток простих), дружні числа тощо (посилання 1 , посилання 2).
- Пам’ятати теорію ймовірностей та комбінаторику.
- Навчитись правильно вводити пошукові запити. Зокрема в інтернеті на порядки більше інформації викладено англійською мовою, ніж російською.
- Інколи трапляються задачі на «Жадібні алгоритми».
- Знати предмети типу «Методи оптимізації», «Дослідження операцій», «Вища математика», «Комп’ютерна дискретна математика», «Алгоритми і дискретні структури даних», «Англійська мова», де вивчається більшість із наведеного вище.
- Пам’ятати хоча б основи роботи з двійковими числами.
- Вміти шукати НСД, НСК.
- Вміти виконувати операції зчитування/записування даних у файл; введення даних із використанням клавіатури, зокрема ввід чисел, розділених пробілом; вивід чисел із певною кількістю знаків після коми.
- Знати корисні бібліотеки, наприклад, iomanip та algorithm в C++; клас BigInteger в C# та ін. З іншого боку, деякі бібліотеки та функції можуть не сприйматись компілятором перевіряючою сторони, наприклад System("pause").