Priprave na računalniške olimpijade - SŠ dijaki, mentorji (23/24)
Section outline
-
Priprave na računalniške olimpijade CEOI, BOI, EGOI in IOI potekajo ob ponedeljkih od 16:00 do 19:00 na FRI, Večna pot 113. Učilnica bo oznanjena vnaprej, če ni drugače, bo to P20 ob 16:15. Izjemoma bodo priprave tudi prek Zooma.Namenjene so dijakom in dijakinjam, ki se želijo udeležiti tekmovanj iz programiranja in algoritmov (državnih ali mednarodnih) ter njihovim mentorjem.Vsakim pripravam bo sledilo nekaj domačih nalog, ki prispevajo h končnemu rezultatu. Domače naloge morate implementirati samostojno, zaželeno pa je, da se pogovarjate o težavah in idejah, ki ste jih imeli pri njihov reševanju.Tekom priprav bodo skozi celo leto potekala tudi izbirna tekmovanja, ki bodo upoštevana pri izboru za CEOI in EGOI. Prvi del predstavljajo tekmovanja COCI (Croatian Open Competition in Informatics), drugi del tekmovanja najtežjih skupin na tekmovanjih FIT in RTK, tretji del pa predstavlja končno izbirno tekmovanje.
Organizatorji priprav so:
- dr. Jure Slak, jure.slak@gmail.com, Google. (ex. Institut Jožef Stefan in Fakulteta za matematiko in fiziko)
- doc. dr. Tomaž Hočevar, tomaz.hocevar@fri.uni-lj.si, Fakulteta za računalništvo
in informatiko
- doc. dr. Nino Bašić, nino.basic@famnit.upr.si, Fakulteta za matematiko, naravoslovje in informacijske tehnologije
- dr. Janez Brank, janez.brank@ijs.si, Institut Jožef Stefan
- doc. dr. Luka Fürst, luka.fuerst@fri.uni-lj.si, Fakulteta za računalništvo in informatiko
- Filip Koprivec, filip.koprivec@fmf.uni-lj.si, Institut Jožef Štefan in Fakulteta za matematiko in fiziko
- Bor Grošelj Simić, bgs@turminal.net, Fakulteta za matematiko in fiziko
Za vprašanja glede organizacije se obrnite na Jureta Slaka, za vprašanja glede sistema za domače naloge in izbirnih tekmovanj na Tomaža Hočevarja, za vprašanja glede snovi pa na tistega, ki je vodil konkretne priprave.
Za vprašanja je na voljo tudi kanal #priprave na Slack-u za tekmovalno programiranje: https://tekm-prog.slack.com/
-
Če se imate namen udeležiti priprav za olimpijade, se prosim zabeležite na zgornjem obrazcu, da bomo lahko bolje načrtovali priprave.
-
(invite link za 30 dni, začenši 7. 10. 2023: https://join.slack.com/t/tekm-prog/shared_invite/zt-27ecpxc51-_n5r2OD0Af8fiY5Gekx7OA
-
Tekmovalci skozi celotne priprave nabirajo točke za skupno razvrstitev, na podlagi katere bomo predlagali ekipe za mednarodne olimpijade. Točkovanje je sestavljeno iz spodaj naštetih uteženih komponent. Točke, ki se upoštevajo pri posamezni komponenti, so delež maksimalnega možnega števila točk, ki ga tekmovalec lahko doseže.
- domače naloge (10%)
- COCI (20%); štejejo 3 kola z najvišjim doseženim številom točk
- FIT/ZOTKS (20%); najtežja skupina
- RTK (25%); najtežja skupina
- izbirno (25%)
- dr. Jure Slak, jure.slak@gmail.com, Google. (ex. Institut Jožef Stefan in Fakulteta za matematiko in fiziko)
-
Predavatelj: Jure Slak
Opis:
Literatura:
- IOI syllabus: https://people.ksp.sk/~misof/ioi-syllabus/ioi-syllabus.pdf
- Knjiga (s preveč snovi): Competitve programming 3
Osnovni algoritmi na celih številih:
- delo s števkami
- številski sistemi
- iskanje deliteljev
- testiranje praštevilskosti za eno število
- testiranje praštevilskosi za veliko števil: Eratostenovo rešeto
- razcep veliko števil na prafaktorje s pomočjo Eratostenovega rešeta
- razcept enega števila na prafaktorje, število deliteljev števila
- Evklidov algoritem, največji skupni delitelj, najmanjši skupni večkratnik
Nam ni uspelo, in bo prišlo na vrsto kdaj drugič:- Operacije na bitih: &, |, ^, ~, <<, >>, nastavljanje enega bita, preverjanje ali je i-ti bit prižgan ugasnjen
- Hitro potenciranje in ideja o obravnavi števil po potencah dvojke
-
Predavatelj: Bor Grošelj Simić
Opis: Osnovne podatkovne strukture: vrsta, sklad, vrsta s prednostjo, povezani seznam, map, set, heap, časovne zahtevnosti operacij
-
Predavatelj: Janez Brank
Opis:
Osnovni algoritmi na seznamih:
- urejanje: [bubble, selection, insertion]-sort, [quick, merge, heap]-sort, [counting, bucket, radix]-sort
- bisekcija
Predprocesiranje seznamov:
- kumulativne vsote: poizvedbe na intervalih, spremembe na intervalih
- korenska dekompozicija (sqrt decomposition, dekompozicija poizvedb)
- redka tabela (sparse table)
- iskanje podniza: hashing (Rabin-Karp), z-funkcija, KMP
-
Predavatelj: Nino Bašić
Opis: polni pregled (brute-force, rekurzija), deli in vladaj, požrešni algoritmi -
Predavatelj: Jure Slak
Opis: Dinamično programiranje, najdaljše naraščajoče podzaporedje, problem nahrbtnika
-
Predavatelj: Vid Kocijan
Opis: Osnovni algoritmi na grafih, pregled v širino, pregled v globino, štetje komponent.
-
Predavatelj: Janez Brank
Opis: najdaljše skupno podzaporedje, urejevalna razdalja, dinamično programiranje na drevesih.
-
Predavatelj: Filip Koprivec
Opis: Najkrajše poti, Dijkstra, Bellman-Ford, Floyd-Warshall.
-
Predavatelj: Vid Kocijan
Opis: Union-Find, minimalno vpeto drevo, Kruskal, Prim.
-
Predavatelj: Luka Fürst
Opis: binarno iskalno drevo, trie, druge razširjene podatkovne strukture, še posebej segment tree
-
Predavatelj: Jure Slak
Opis: Geometrija: ploščine, skalarni produkt, vektorski produkt, konveksna ovojnica, kompresija koordinat, presečišča, sweep line.
-
RTK - Tekmovanje ACM iz računalništva in informatike
-
Predavatelj: Tomaž Hočevar
Opis: Topološko urejanje, močno povezane komponente, mostovi in prerezna vozlišča.
-
Predavatelj: Janez Brank
Opis: Napredno dinamično programiranje: bitmask DP - TSP, Steiner tree, Convex-hull optimization, Divide and conquer optimization.