Weekly outline

  • Splošne informacije

    Priprave na računalniške olimpijade CEOI, BOI, EGOI in IOI potekajo ob ponedeljkih od 16:00 do 19:00 prek sistema Zoom.

    Namenjene so dijakom, 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@ijs.si, 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

    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/

  • 1. srečanje, 18. 10. - Uvod, Osnovni algoritmi na celih številih

    Predavatelj: Jure Slak

    Opis:

    Literatura:

    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
    • 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


  • 2. srečanje, 2. 11. - Osnovne podatkovne strukture

    Pozor: srečanje je izjemoma v torek!

    Predavatelj: Tomaž Hočevar

    Opis: Osnovne podatkovne strukture: vrsta, sklad, vrsta s prednostjo, povezani seznam, map, set, heap, časovne zahtevnosti operacij

    • 3. srečanje, 15. 11. - Osnovni algoritmi na seznamih in nizih

      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)
      Osnovni algoritmi na nizih: 

      • iskanje podniza: hashing (Rabin-Karp), z-funkcija, KMP

      • 4. srečanje, 29. 11. - Osnove strategije reševanja problemov

        Predavatelj: Nino Bašić

        Opis: polni pregled (brute-force, rekurzija), deli in vladaj, požrešni algoritmi

        • 5. srečanje, 13. 12. - Dinamično programiranje 1

          Predavatelj: Filip Koprivec

          Opis: Dinamično programiranje, najdaljše naraščajoče podzaporedje, problem nahrbtnika

          • 6. srečanje, 3. 1. - Dinamično programiranje 2

            Predavatelj: Luka Fürst

            Opis: najdaljše skupno podzaporedje, urejevalna razdalja, dinamično programiranje na drevesih.

            • This week

              ZOTKS šolsko tekmovanje v programiranju - 13. 1.

              • 7. srečanje, 17. 1. - Osnovni algoritmi na grafih

                Predavatelj: Nino Bašić

                Opis: Osnovni algoritmi na grafih, pregled v širino, pregled v globino, štetje komponent.

                • 8. srečanje, 31. 1. - Najkrajše poti v grafih

                  Predavatelj: Luka Fürst

                  Opis: Najkrajše poti, Dijkstra, Bellman-Ford, Floyd-Warshall.

                  • 9. srečanje, 14. 2. - Minimalna vpeta drevesa

                    Predavatelj: Jure Slak

                    Opis: Union-Find, minimalno vpeto drevo, Kruskal, Prim.

                    • 10. srečanje, 7. 3. - Napredne podatkovne strukture

                      Predavatelj: Nino Bašić

                      Opis: binarno iskalno drevo, trie, druge razširjene podatkovne strukture, še posebej segment tree

                      • ZOTKS državno tekmovanje v programiranju - 12. 3.

                        • 11. srečanje, 21. 3. - Geometrija

                          Predavatelj: Tomaž Hočevar

                          Opis: Geometrija: ploščine, vektorski produkt, konveksna ovojnica, kompresija koordinat, presečišča, sweep line.

                          • RTK - 26. 3.

                            RTK - Tekmovanje ACM iz računalništva in informatike

                            http://rtk.ijs.si/

                            https://putka-rtk.acm.si/contests/rtk-2022-3/

                            • 12. srečanje, 4. 4. - Uporabe DFS

                              Predavatelj: Filip Koprivec

                              Opis: Topološko urejanje, močno povezane komponente, mostovi in prerezna vozlišča.

                              • 13. srečanje, 19. 4. - Dinamično programiranje 3

                                Pozor: srečanje je izjemoma v torek.

                                Predavatelj: Janez Brank

                                Opis: Napredno dinamično programiranje: bitmask DP - TSP, Steiner tree, Convex-hull optimization, Divide and conquer optimization.

                                • 14. srečanje, 9. 5. - Izbrana poglavja

                                  Predavatelj: Tomaž Hočevar

                                  Opis: Fenwick tree, Lowest common ancestor, Bipartite matching, Heavy-light decomposition, Centroid decomposition

                                  • končno izbirno tekmovanje - 14. 5.

                                    Tekmovanje bo potekalo na sistemu https://putka-rtk.acm.si od 9:00 do 13:00.