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

Ve školním roce 2010/2011 vedeme s Milanem Strakou 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.

Viz též letáček :-)

Cvičení se koná každou středu od 15:40 v S10, kdo chcete chodit, přihlašte se, prosíme, v SISu, nebo napište mail.

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í.

Podmínky k získání zápočtu jsou (AND):

Kontakt

Svým cvičícím pište na adresu mami@ucw.cz (Martin+Milan).

Zápočtový program

Domácí úkoly

Domácí úkoly jsou dvou druhů:

Na získání kýžené stovky bodů bohatě stačí praktické úlohy, pokud je řešíte včas.

Teoretické úkoly

DatumIDBodyPříklady
2. 3. funrb7Co dělá funkce rb() z letáčku?
funflr10Co dělá funkce flr() z letáčku? Jakou má časovou složitost?
9. 3. tspx20Jistý obchodní cestující nabízí následující problém: mějme neorientovaný graf s ohodnocenými hranami a hledejme v něm nejkratší kružnici, na níž leží všechny vrcholy. Polynomiálně to zatím nikdo neumí, ale zkuste najít algoritmus, který beží v čase O(2N*Nk) pro co nejmenší k.
22. 3. csrt10Ukažte převod třídění posloupnosti reálných čísel na výpočet konvexního obalu.
27. 4. fact15Jak spočítat poslední nenulovou číslici desítkového zápisu čísla N! ?
4. 5. dfu-pc10Dokažte, že pokud v implementaci DFU používáme pouze path compression, je amortizovaná složitost findu logaritmická.
30. 8. zapoεBody navíc na výborný zápočťák.

Co jsme dělali

datum co se cvičilo
23. 2. Dynamické programování poprvé: rozklad textu na slova, optimalizování mobilnice.
2. 3. DP podruhé: úlohy o knihovně.
9. 3. Různé varianty knihoven (zejména bez podmínky na uspořádání), souvislost s problémem batohu a dvou loupežníků.
16. 3. Geometrie v rovině: počítání obsahu a těžiště (co to je?) mnohoúhelníků. Rozhodování, zda bod leží uvnitř mnohoúhelníka.
23. 3. Inkrementální konvexní obal. Děravá podmatice s největším součtem. Počet obdélníků, ve kterých leží daný bod.
30. 3. Cvičení odpadlo.
6. 4. Úlohy z MO-P: Mosty a tunely, cyklus z domina, lexikograficky nejmenší rým, zbyteční úředníci.
13. 4. Ještě pár zbytečných úředníků. Body v rovině a jejich rozklad na dvě středově symetrické množiny. Počítáme mřížové body v mnohoúhelníku.
20. 4. Mřížové body a počítání největších společných dělitelů. Kombinační čísla.
27. 4. Trocha teorie čísel: kombinační čísla modulo prvočíslo, hrátky s faktoriály.
4. 5. Komprimované vstupy: rozklad RLE-komprimovaného obrázku na souvislé oblasti (s Union-Findem i bez něj), frekvence znaků v LZ-komprimovaném textu.
11. 5. Šroubky, matičky a Quicksort. Problémy malíře kvadrantisty.
18. 5. Rektorský sportovní den.
25. 5. Co si počít s morseovkou bez oddělovačů aneb hledáme K nejlepších řešení. Datová struktura na střílení paprskometem po konvexním nepříteli. Datová struktura pro cesty ve stromech.
Stránku spravuje Martin Mareš