Institute of Computer Science
  1. Courses
  2. 2020/21 spring
  3. Programming competitions (MTAT.03.269)
ET
Log in

Programming competitions 2020/21 spring

  • Pealeht
  • Materjalid

Raamatuid ja muid materjale:

  • Tennisberg, T., Gabrel, K. (2017, 2018) Võistlusprogrammeerimine (Lehel olevad lingid ülesannetele on TK kursuse vmt osa ja ei puutu otseselt meisse).
  • Laaksonen, A. (2018) Competitive Programmer's Handbook
  • Halim, S., Halim, F., Effendy, S. (2020) Competitive programming 4 ja selle varasemad versioonid (ei ole tasuta kättesaadav)
  • CP-Algorithms

Kursusel toetume esimesele raamatule, ülejäänu on toodud laiemaks kontekstiks.

Praktikumide materjalid

  • Praktikum 1: VP peatükk, koodinäited. Arvestuse saamiseks tuleks ära lahendada 3 tavaülesannet (ABCDE seast) või 2 lisaülesannet (XYZ seast) 15.03 õhtuks.
  • Praktikum 2: VP peatükk, koodinäited. Arvestuse saamiseks tuleks lahendada 3 tavaülesannet (ABCD seast) või 2 lisaülesannet (XYZ seast) 22.03 õhtuks.
  • Praktikum 3: VP peatükk, alates lk. 25, koodinäited. Arvestuse saamiseks tuleks lahendada 3 tavaülesannet (ABCD seast) või 1 lisaülesanne (XY seast) 05.04 õhtuks.
  • Praktikum 4: VP peatükk, punktid 8.1 ja 8.2; kui aega jääb, siis ka 8.3, koodinäited. Arvestuse saamiseks tuleks lahendada 2 tavaülesannet (ABC seast) või 1 lisaülesanne (XY seast) 19.04 õhtuks.
  • Praktikum 5: CPH peatükk 15. Arvestuse saamiseks tuleks lahendada 2 tavaülesannet (ABC seast) või 1 lisaülesanne (XY) seast 03.05 õhtuks.
  • Praktikum 6: modint class ja tahvlijoonistused. Arvestuse saamiseks tuleks lahendada 3 ülesannet 17.05 õhtuks.
  • Praktikum 7: VP peatükk, punktid 11.4.1 ja 11.6, koodinäited. Arvestuse saamiseks tuleks lahendada mõlemad tavaülesanded (AB) või lisaülesanne (X) 31.05 õhtuks.
  • Praktikum 8: VP peatükk, koodinäited. Arvestuse saamiseks tuleks lahendada üks ülesannetest A ja B 07.06 õhtuks.

Mõned praktilised nõuanded programmeerimiskeelte osas

  • Võistlusprogrammerimise industry standard on C++: selles kirjutatud programmid on kiired ja samas on C++ standardteek piisavalt suur. Kõikvõimalikud näited on samuti kõige suurema tõenäosusega C++-s. Kursusel on võimalik ja lubatud kasutada ka kõiki teisi programmeerimiskeeli, mida Codeforces kasutada võimaldab.
  • Kursuse praktikumides ja harjutusvõistlustes on teatud keeltel pikem ajalimiit, mis peaks nendes keeltes võistlemise "ausamaks" tegema. Näiteks kui ülesande ajalimiit on 1 sekund, siis Java programmil rakendatakse ajalimiiti 1.5 sekundit ja Haskelli programmil 3 sekundit. Samas tuleb arvestada, et "päris" võistlustel sellist varianti üldiselt ei ole ja näiteks Pythoni kasutajad on tavaliselt ebaeelisseisus.
  • Pythonis kirjutades on PyPy interpretaator sageli kiirem.
  • Kui te kasutate C++ koodis sisendi-väljundi jaoks cin ja cout ning printf ja scanf ei kasuta, siis võib olla mõistlik panna programmi algusesse ios::sync_with_stdio(false). See võtab cin-cout ning printf-scanf omavahel sünkroonist välja, mis teeb sisendi-väljundi kiiremaks (samas ei tohi siis printf ega scanf kasutada, vastasel juhul võib väljund ekraanile ilmuda ebaloogilises järjekorras).
  • C++ (võistlusprogrammeerimise) koodis ei tasu reavahetuse jaoks kasutada võtmesõna endl. See tühjendab peale reavahetuse trükkimise iga kord väljundipuhvri. Kui seda teha palju kordi, teeb see väljundi trükkimise aeglaseks.
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment