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

Sample Solutions CTU Open Contest 200 8

  • Upload
    quinto

  • View
    30

  • Download
    0

Embed Size (px)

DESCRIPTION

Sample Solutions CTU Open Contest 200 8. Alea. Alea. Vygenerování posloupnosti hodů Zkoušení všech možností Již spočítané varianty se ukládají (dynamické programování). Alea. Nejlepší řešení pro kombinace: Využité x nevyužité stavy (2 11 ) Počet „spotřebovaných hodů“ (15 * 11) - PowerPoint PPT Presentation

Citation preview

Page 1: Sample Solutions CTU Open  Contest 200 8

SampleSampleSolutionsSolutions

CTU OpenCTU Open Contest 200 Contest 20088

Page 2: Sample Solutions CTU Open  Contest 200 8

AleaAlea

Page 3: Sample Solutions CTU Open  Contest 200 8

Alea

Vygenerování posloupnosti hodů

Zkoušení všech možností

Již spočítané varianty se ukládají (dynamické programování)

Page 4: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

BankingBanking

Page 6: Sample Solutions CTU Open  Contest 200 8

Banking

Jednoduchá simulace

Trochu ztížená nekorektním vstupem

Page 7: Sample Solutions CTU Open  Contest 200 8

ContestContest

Page 8: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

DeclareDeclare

Page 10: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

ExExchangechange

Page 12: Sample Solutions CTU Open  Contest 200 8

Exchange

„záchranná“ úloha

Porovnat každý s každým

Page 13: Sample Solutions CTU Open  Contest 200 8

FenceFence

Page 14: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

GamblingGambling

Page 17: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

HelpHelp

Page 20: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

InsertInsert

Page 22: Sample Solutions CTU Open  Contest 200 8

Insert

Stromy jsou rekurzivní struktury Rekurzivní řešení

Pro jeden uzel (i žádný) je 1 možnost Jinak podle obou podstromů

Page 23: Sample Solutions CTU Open  Contest 200 8

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: Sample Solutions CTU Open  Contest 200 8

Autoři úlohAutoři úloh

Josef Cibulka

Jan Stoklasa

Martin Kačer