47
CTU Open 2016 Prezentace řešení úloh

ení úloh š e ř - cvut.cz

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ení úloh š e ř - cvut.cz

CTU Open 2016Prezentace řešení úloh

Page 2: ení úloh š e ř - cvut.cz

Aerial Archeology

Page 3: ení úloh š e ř - cvut.cz

Arch(a)eology

● Vyzkoušet všechnypřímky

Page 4: ení úloh š e ř - cvut.cz

Pomalé řešení

● Stačí přímky těsně vedle dvojice vrcholů● O(n3): O(n2) přímek O(n) práce za každou

Page 5: ení úloh š e ř - cvut.cz

Zametací přímka● Otáčíme okolo každého vrcholu a udržujeme počty průniků

s hranicí každého mnohoúhelníka● O(n^2 log n)

p

22

2

42

0

Page 6: ení úloh š e ř - cvut.cz

Hot Air Ballooning

Page 7: ení úloh š e ř - cvut.cz

Hot Air Ballooning● Načteme seznamy jako čísla.● Rozdělíme je na číslice a vložíme

do množiny.● Tuto množinu vložíme do množiny

množin.● Vypíšeme velikost množiny množin.● Lze řešit samozřejmě i jinak.

#include <iostream>#include <set>using namespace std;

int main(void) { int count; while(cin >> count) {

std::set<std::set<int> >container;

for(int i=0; i<count; i++) { int number; cin >> number; std::set<int> con_num; while(number > 0) { int num = number % 10; number = number / 10; con_num.insert(num); } container.insert(con_num); }

cout << container.size() << endl; } return 0;}

Page 8: ení úloh š e ř - cvut.cz

Cable Connection

Page 9: ení úloh š e ř - cvut.cz

Konvexní obálka, stačí severovýchodníčástO(N log N)

Možnosti:A. Kabel jde po hraněobálky O(N)

B. Kabel prochází jenjedním bodem obálky O(N)Celkem O(N log N)

Cable Connection

Page 10: ení úloh š e ř - cvut.cz

Možnosti:A. Kabel jde po hraně obálky

Vyzkoušej všechny hranyobálky,O(N)

B

A

Koncové body kabelu A a Bpro každou hranu najdeš včase O(1) Hranou prolož přímku a najdijejí průsečíky s osami

Cable Connection

Page 11: ení úloh š e ř - cvut.cz

Možnosti:B. Kabel prochází jen jedním bodem obálky

Vyzkoušej všechny bodyobálky,O(N)

B

A

Koncové body kabelu A a Bpro každý bod obálky najdeš včase O(1)

[x,y]

! Analytická geometrie !! POUŽÍVEJ Taháky !

Cable Connection

Page 12: ení úloh š e ř - cvut.cz

Display

Page 13: ení úloh š e ř - cvut.cz

Display

● Stavový automat s celkem 8 stavy.● Přechody jsou operace.

1 2 3 4

5 6 7 8

< < <

<Start

j

< < <

j

Page 14: ení úloh š e ř - cvut.cz

Display

● Stačí implementovat 2 operace např. ( <, | ) nebo( \, |).

● Ostatní operace lze vyjádřit pomocí dvouimplementovaných.

Page 15: ení úloh š e ř - cvut.cz

Fence

Page 16: ení úloh š e ř - cvut.cz

Ohradíme ovce

−2+2

● Nejmenší obvod mánapříklad obdélník

● Lokální úpravy

● Stále stejný obvod

Page 17: ení úloh š e ř - cvut.cz

Cesta pro vlka

+3−1

+3

−1

● Každý čtvereček prodlouží ohradu o 2● Stačí najít nejkratší cestu od vlka ven z ohrady● Až na...

Page 18: ení úloh š e ř - cvut.cz

Speciální případy

−2+2

● Cesta rozdělí ohradu

Nemá řešení

Page 19: ení úloh š e ř - cvut.cz

Erratum● Do úlohy se nám vloudila chyba, která byla odhalena až během

prezentace řešení.● Jedná se o to, že v následující situaci vzorová řešení tvrdí, že

ohrada existuje, přestože se vlk nemůže dostat ven, pokud seohrada nesmí sama sebe dotýkat.

● Za toto nedopatření se omlouváme.● Další informace naleznete v zadání úlohy.

Page 20: ení úloh š e ř - cvut.cz

Tree Stands

Page 21: ení úloh š e ř - cvut.cz

Tree Stands● Requires dynamic programming based solution.

● Keep a 3D table - counts[V][K][S] - keeping the number of waysto place K stands at a subtree rooted at node V, while the state Sof the root is either 0 (has no stand), 1 (has safe stand), 2 (hasunsafe stand).

● Tree stand is safe when it is adjacent with yet another tree stand.

Page 22: ení úloh š e ř - cvut.cz

Tree Stands● Filling up the table entry of counts[V][K][S] while knowing the

answers for all descendants of node V has 2 steps.● First, we compute number of combinations to place K stands in

the subtrees of V, while not placing a stand at node V andkeeping track of the state of the combinations – aux[K][S]:– S = 0 (no descendant has a stand)– S = 1 (all stands in descendant nodes are safe)– S = 2 (at least one stand at a descendant node is not safe)

Page 23: ení úloh š e ř - cvut.cz

Tree Stands● Using these auxiliary counts, we can get the answer for

counts[V][K][S] by:

counts[V][0][0] = 1;

for (k = 1; k <= K; k++){ counts[V][k][0] = aux[k][0] + aux[i][1]; counts[V][k][1] = aux[k-1][0] + aux[k-1][2]); counts[V][k][2] = aux[k-1][0];}

● Do not forget to use modulo operator after combining thecounts!!!

Page 24: ení úloh š e ř - cvut.cz

Tree Stands● Computing the auxiliary counts in aux[K][S]

requires yet another DP solution based onalready computed counts[U][K][S] for alldescendant nodes U of node V. – Combining the combinations in the descendant

trees need to be done carefully with respect to thestates of their trees.

– See the testers' solutions for more details.

Page 25: ení úloh š e ř - cvut.cz

Orchard

Page 26: ení úloh š e ř - cvut.cz

Dvě zametací přímky X a Y na sebe kolméurčují obdélník s kandidáty na opt. řešení

Orchard Division

V jednom kroku posuň Y nahoru k další obsazené ysouřadnici snaž se maximálně zmenšit X a udržetkandidáty

X

Y

X

Y

Page 27: ení úloh š e ř - cvut.cz

Orchard Division

V jednom kroku posuň Y nahoru k další obsazené ysouřadnici snaž se maximálně zmenšit X a udržetkandidáta

X

Y

XY

Dvě zametací přímky X a Y na sebe kolméurčují obdélník s kandidáty na opt. řešení

Page 28: ení úloh š e ř - cvut.cz

Orchard DivisionX

Y Kandidátní body ukládej do max-prioritnífronty podle xsouřadnice

Zohledni možnou vertikální a horizontálníkolinearitu

Amortizovaná složitost jednoho kroku O(log N).

Page 29: ení úloh š e ř - cvut.cz

Orchard Division

Čtyři možné rohy, čtyři rotace matice, stejný kódřešení.

Celkem čtyřikrát,pokaždé i s úvodním seřazením podle y

souřadnice

O(N log N)

Page 30: ení úloh š e ř - cvut.cz

Orchard DivisionNení to tak těžké, celý kód solveru:

Page 31: ení úloh š e ř - cvut.cz

It's Raining, Man

Page 32: ení úloh š e ř - cvut.cz

Raining

● Karta = vrchol, ● Stejná barva nebo hodnota = hrana➔Hamiltonovská cesta na až 52 vrcholech (příliš)● Graf je ale speciální➔Rozbor případů

Page 33: ení úloh š e ř - cvut.cz

D

H

C

S

2 76543 8Projdeme jednu barvu po druhé

● Stačí najít cestumezi barvami

● I toto je cestaD

H

C

S

2 6543

Page 34: ení úloh š e ř - cvut.cz

D

H

C

S

2 76543 8Projdeme jednu barvu po druhé

● Stačí najít cestumezi barvami

● I toto je cestaD

H

C

S

2 6543

Page 35: ení úloh š e ř - cvut.cz

Další možnosti

D

H

C

S

2 6543

● Centralizované (v D)

● Úskoky (do S)

D

H

C

S

2 76543 8

Page 36: ení úloh š e ř - cvut.cz

Suspicious Samples

Page 37: ení úloh š e ř - cvut.cz

avg

int sum = 0;for (int i=left; i<right; ++)sum += value[i];

return sum / (right-left);

Page 38: ení úloh š e ř - cvut.cz

avg1

sum2 = sum1+ value[right++]- value[left++];

avg2

Klouzavý průměr(movingaverage)

Page 39: ení úloh š e ř - cvut.cz

min1

min2

Page 40: ení úloh š e ř - cvut.cz

min1

min2

28

34 28

40 35 31

Page 41: ení úloh š e ř - cvut.cz

min1

min2

28

34 28

40 35 31

Page 42: ení úloh š e ř - cvut.cz

min1

min2

28

34 31

40 35

Page 43: ení úloh š e ř - cvut.cz

Colorful Tribune

Page 44: ení úloh š e ř - cvut.cz

Latinský čtverec řádu N

Tribune

1 2 3 4 51 2 3 45

1 2 351 25

15

432

243

Pravidlo: Každý řádek isloupec obsahuje všechnysymboly z danýchN symbolů a každý z nichprávě jednou

Hledaný prvek porušuje totopravidlo Vylož si každý symbol (vzadání: barvu) jako celé číslo

Page 45: ení úloh š e ř - cvut.cz

Latinský čtverec řádu N

Tribune

1 2 3 4 51 2 3 45

1 2 351 25

15

432

243

Odlišné řádkové asloupcové součty určujířádek a sloupec hledanéhoprvku

15 15 15 15

15

15

15

15

13

13

Správná hodnota hledanéhoprvku je Správný součet minusodlišný součet plushodnota odlišného prvkuNapř. 4 = 15 ─ 13 + 2Nemusíme testovat hodnotyžádných prvkůStihneme za jeden průchodO(N2)

Page 46: ení úloh š e ř - cvut.cz

Latinský čtverec řádu N

Tribune

1 2 3 4 51 2 3 45

1 2 351 25

15

432

243

Odlišné řádkové asloupcové součty určujířádek a sloupec hledanéhoprvku

15 15 15 15

15

15

15

15

13

13

Správná hodnota hledanéhoprvku je Správný součet minusodlišný součet plushodnota odlišného prvkuNapř. 4 = 15 ─ 13 + 2Nemusíme testovat hodnotyžádných prvkůStihneme za jeden průchodO(N2)

Page 47: ení úloh š e ř - cvut.cz