ctu open solution 2008

24
Sample Sample Solutions Solutions CTU Open CTU Open Contest 200 Contest 200 8 8

Upload: guest2bf5458

Post on 09-Feb-2017

433 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: CTU Open Solution 2008

SampleSampleSolutionsSolutions

CTU OpenCTU Open Contest 200 Contest 20088

Page 2: CTU Open Solution 2008

AleaAlea

Page 3: CTU Open Solution 2008

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

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

BankingBanking

Page 6: CTU Open Solution 2008

Banking Jednoduchá simulace

Trochu ztížená nekorektním vstupem

Page 7: CTU Open Solution 2008

ContestContest

Page 8: CTU Open Solution 2008

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

DeclareDeclare

Page 10: CTU Open Solution 2008

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

ExExchangechange

Page 12: CTU Open Solution 2008

Exchange „záchranná“ úloha

Porovnat každý s každým

Page 13: CTU Open Solution 2008

FenceFence

Page 14: CTU Open Solution 2008

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

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

GamblingGambling

Page 17: CTU Open Solution 2008

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

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

HelpHelp

Page 20: CTU Open Solution 2008

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

InsertInsert

Page 22: CTU Open Solution 2008

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

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

Autoři úlohAutoři úlohJosef Cibulka

Jan Stoklasa

Martin Kačer