Arvutiteaduse instituut
  1. Kursused
  2. 2020/21 kevad
  3. Programmeerimisvõistlused (MTAT.03.269)
EN
Logi sisse

Programmeerimisvõistlused 2020/21 kevad

  • 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.
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused