ctu open solution 2008
TRANSCRIPT
![Page 1: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/1.jpg)
SampleSampleSolutionsSolutions
CTU OpenCTU Open Contest 200 Contest 20088
![Page 2: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/2.jpg)
AleaAlea
![Page 3: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/3.jpg)
Alea Vygenerování posloupnosti hodů
Zkoušení všech možností
Již spočítané varianty se ukládají (dynamické programování)
![Page 4: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/4.jpg)
Alea Nejlepší řešení pro kombinace:
Využité x nevyužité stavy (211) Počet „spotřebovaných hodů“ (15*11)
(Pozn.: Nezáleží na tom, zda mohu v třetím hodu znovu použít odložené kostky)
![Page 5: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/5.jpg)
BankingBanking
![Page 6: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/6.jpg)
Banking Jednoduchá simulace
Trochu ztížená nekorektním vstupem
![Page 7: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/7.jpg)
ContestContest
![Page 8: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/8.jpg)
Contest Reverzní úloha k B Mohly v tom být „složitosti“
Nutné připravit si dostatečný počet účtů S dostatečnými zůstatky Ve správných bankách ...
... ale nebyly!
![Page 9: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/9.jpg)
DeclareDeclare
![Page 10: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/10.jpg)
Declare Dynamické programování Pamatuji si nejlepší řešení pro:
Prvních N slov z prvního textu (2000) Prvních M slov z druhého textu (2000)
Nejlepší řešení BEST(n,m) BEST(n-1,m-1), pokud slovo1[n]=slovo2[m] BEST(n-1,m) a přidat slovo1[n] BEST(n,m-1) a přidat slovo2[m]
![Page 11: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/11.jpg)
ExExchangechange
![Page 12: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/12.jpg)
Exchange „záchranná“ úloha
Porovnat každý s každým
![Page 13: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/13.jpg)
FenceFence
![Page 14: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/14.jpg)
Fence Pouze 16 stromů
Zkusit všechny kombinace pokácení (216)
Pro každou kombinaci Sečíst dřevo z pokácených stromů Zkusit, zda stačí na konvexní obálku Najít minimum
![Page 15: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/15.jpg)
Fence Určení konvexní obálky
Pouze 16 bodů => existuje řešení v O(n3)
Všechny dvojice bodů Pomocí kartézského součinu zjistit, zda
jsou ostatní body na stejné straně
![Page 16: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/16.jpg)
GamblingGambling
![Page 17: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/17.jpg)
Gambling Tři (překrývající se) úseky o délce K
Úsek s nejmenším součtem je vždy součástí výsledku Zbytek lze pokrýt dvěma úseky z
jakéhokoli jiného řešení => Pro každé optimum lze najít také
optimum obsahující onen nejmenší úsek
![Page 18: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/18.jpg)
Gambling Hledáme 2 úseky, které pokryjí zbytek
Pro každé číslo zjistíme jeho nejlepší pokrytí „zleva“ a „zprava“ Lze v lineárním čase
Najdeme 2 sousedící čísla s nejlepším součtem
![Page 19: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/19.jpg)
HelpHelp
![Page 20: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/20.jpg)
Help Začnu nejmenším balíčkem
Neexistuje lepší řešení, než jeho hodnota
Ostatní seřadím podle hodnoty... ... a přidávám od NEJVĚTŠÍHO
![Page 21: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/21.jpg)
InsertInsert
![Page 22: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/22.jpg)
Insert Stromy jsou rekurzivní struktury
Rekurzivní řešení
Pro jeden uzel (i žádný) je 1 možnost Jinak podle obou podstromů
![Page 23: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/23.jpg)
Insert Levý podstrom: N1 uzlů a C1 možností Pravý podstrom: N2 uzlů a C2 možností
Střídání L a P: comb(N1, N1+N2) Možnosti permutace vlevo: C1
Možnosti permutace vlevo: C2
... To všechno vynásobíme
![Page 24: CTU Open Solution 2008](https://reader035.vdocuments.net/reader035/viewer/2022062218/589bf05a1a28ab40348b5295/html5/thumbnails/24.jpg)
Autoři úlohAutoři úlohJosef Cibulka
Jan Stoklasa
Martin Kačer