Пам’ятка для тих, хто бере участь у Всеукраїнських та Всесвітніх олімпіадах з програмування

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