Cvičení z Programování II pro pokročilé

Ve letním semestru 2013/2014 vedeme s Jirkou Setničkou speciální cvičení z předmětu Programování II [NPRG031] pro pokročilé studenty, kteří již nasbírali nějaké zkušenosti z programování (třeba v olympiádách a korespondenčních seminářích) a chtěli by se naučit víc. Tematicky bude navazovat na Programování I pro pokročilé z minulého semestru, ale jeho absolvování určitě nebude nutné pro účast na tomto cvičení.

Cvičení se koná každé pondělí od 15:40 v S4, kdo chcete chodit, přihlašte se v SISu, případně nám pošlete mail, pokud vám to SIS nedovolí.

Podmínky na získání zápočtu najdete v pravidlech hry. Také se můžete podívat na reklamní letáček.

Svým cvičícím pište na adresu mami@ucw.cz.

Teoretické úkoly

DatumKódBodyZadání
17. 2. funrb7Co a proč dělá funkce rb() z letáčku?
18. 2. funm10Co a proč dělá funkce main() z letáčku?
24. 2. poly20Pro daný polynom P vymyslete datovou strukturu, která si cosi předpočítá pro posloupnost x1, … xn a pak bude umět v konstantním čase vyhodnocovat výrazy S(i,j) = Σk=0…j-i-1 P(k)*xi+k. Nápověda: zobecněte prefixové součty.
31. 3. pish10Vymyslete piškvorkovou datovou strukturu s lepší složitostí než Θ(log n) na operaci.
19. 5. rgb15Mějme posloupnost červených, zelených a modrých prvků. Najděte v ní nejdelší bílý úsek, tedy takový, v němž je stejně prvků každé barvy. Požadován lineární čas. Další body za verzi pro větší (ale pevný) počet barev.
1. 9. ksp0Doplňkové teoretické úlohy z KSP. Jen na požádání.

Co jsme dělali

datum co se cvičilo
17. 2. Okénková maxima v 1D i 2D. Dynamické programování poprvé: rozklad textu na slova.
24. 2. DP podruhé: optimalizování klávesnice mobilu, knihovna na mnoho způsobů.
3. 3. Optimální vyhledávací stromy. Luštění Vigenèrovy šifry. Řezání trámu.
10. 3. Hrátky s kvadrantovými kódy. Komprese a dekomprese. Transformování kvadrantových obrázků. Problém malíře kvadrantisty. RLE komprese a hledání největší souvislé oblasti.
17. 3. RLE a Union-Find. Body v rovině a jejich rozklad na dvě středově symetrické množiny.
24. 3. Věže na šachovnici a letmá zmínka o dámách. Piškvorková datová struktura.
31. 3. Piškvorky podruhé. Rozklad rovinných grafů na 5 lesů a jejich barvení 5 barvami.
7. 4. Jehla rozlámaná v seně. Buridan a kavárny (MO 63-3-1).
14. 4. Hledání cest v ohodnocených stromech: maximální délka, zadaná délka.
21. 4. Ēostre, Paasfees, Великден, Ülestõusmispühad, Πάσχα, Páskar, 復活祭, Pace.
28. 4. ±1 + ±2 + … ±N = X. Make money fast aneb jak obehrát směnárnu. Pásové dopravníky.
5. 5. Slovní žebříky a okénkové hešování. Mřížové body v mnohoúhelnících a Pickova formule.
12. 5. Hanojské věže na mnoho způsobů.
19. 5. Kráva za plotem. Hledání pravidelného k-úhelníka mezi body na kružnici. Nejdelší bílá podposloupnost.
Stránku spravuje Martin Mareš