osaka pod godzillou príklad prvého kola zimnej časti 26. ročníka ksp
DESCRIPTION
Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP. Lu káš Miňo 3Ib [email protected]. Osaka pod Godzillou. Príklad prvého kola zimnej časti 26. ročníka KSP 20 bodov, kategória O V Osake postavili nový rad mrakodrapov. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/1.jpg)
Osaka pod GodzillouOsaka pod Godzillou
Príklad prvého kola Príklad prvého kola zimnej časti 26. ročníka zimnej časti 26. ročníka KSP KSP LuLukáš Miňokáš Miňo
3Ib3Ib
[email protected]@gmail.com
![Page 2: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/2.jpg)
Osaka pod GodzillouOsaka pod Godzillou
Príklad prvého kola zimnej časti 26. ročníka KSPPríklad prvého kola zimnej časti 26. ročníka KSP 20 bodov, kategória O20 bodov, kategória O V Osake postavili nový rad mrakodrapov. V Osake postavili nový rad mrakodrapov. Keď sa o tom dozvedela Godzilla, tak si povedala, že je ten pravý Keď sa o tom dozvedela Godzilla, tak si povedala, že je ten pravý
čas na ich označkovanie (To znamená zanechanie odtlačku nohy čas na ich označkovanie (To znamená zanechanie odtlačku nohy na streche). na streche).
Tak vyliezla na ten najľavejší a rozhliadla sa. Tak vyliezla na ten najľavejší a rozhliadla sa. Zistila, že nemôže označkovať všetky, lebo vie skákať len na nižšie Zistila, že nemôže označkovať všetky, lebo vie skákať len na nižšie
mrakodrapy. mrakodrapy. Zato sa vie rozbehnúť a preto vie skočiť ľubovoľne ďaleko (Jedine, Zato sa vie rozbehnúť a preto vie skočiť ľubovoľne ďaleko (Jedine,
že by cestou stretla vyšší mrakodrap a narazila do neho). že by cestou stretla vyšší mrakodrap a narazila do neho). Avšak Godzilla po boji s Mechagodzillou je unavená a preto keď sa Avšak Godzilla po boji s Mechagodzillou je unavená a preto keď sa
raz rozbehne, tak už nesmie zastať (presnejšie, ak zastane, tak sa raz rozbehne, tak už nesmie zastať (presnejšie, ak zastane, tak sa nerozbehne znova). nerozbehne znova).
Pomôžte Godzille zistiť, koľko najviac mrakodrapov vie označkovať. Pomôžte Godzille zistiť, koľko najviac mrakodrapov vie označkovať.
![Page 3: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/3.jpg)
ÚlohaÚloha
V prvom riadku je N, čo je počet mrakodrapov. V prvom riadku je N, čo je počet mrakodrapov. V druhom riadku je N čísielV druhom riadku je N čísiel v[1], v[2], … v[N] v[1], v[2], … v[N], ktoré , ktoré
označujú výšky jednotlivých mrakodrapov. označujú výšky jednotlivých mrakodrapov. Godzilla stojí na mrakodrape 1. Godzilla stojí na mrakodrape 1. Godzila vie skočiť z mrakodrapu i na mrakodrap j práve Godzila vie skočiť z mrakodrapu i na mrakodrap j práve
vtedy, ak platia nasledovné podmienky: vtedy, ak platia nasledovné podmienky: 1.1. i < j i < j --- nemôže skočiť na predchádzajúci mrakodrap. - nemôže skočiť na predchádzajúci mrakodrap. 2.2. VV[j] > v[i][j] > v[i] --- nemôže skočiť na vyšší mrakodrap. - nemôže skočiť na vyšší mrakodrap. 3.3. Pre všetky k také, že i < k < j, platí: Pre všetky k také, že i < k < j, platí: v[k]<=v[i] -v[k]<=v[i] -- počas - počas
skoku nemôže ,,preletieť'' cez nejaký vyšší mrakodrap. skoku nemôže ,,preletieť'' cez nejaký vyšší mrakodrap. Vašou úlohou je napísať program, ktorý zo zadaných Vašou úlohou je napísať program, ktorý zo zadaných
údajov zistí, koľko najviac skokov môže Godzilla údajov zistí, koľko najviac skokov môže Godzilla spraviť. spraviť.
![Page 4: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/4.jpg)
PríkladPríklad
VstupVstup N = 10N = 10
10 9 8 7 8 9 6 4 2 9 10 9 8 7 8 9 6 4 2 9
VýstupVýstup 5 5
Poznámka:Poznámka: Najskôr skočí na mrakodrap 2 potom na Najskôr skočí na mrakodrap 2 potom na
mrakodrap 6, 7, 8 a 9 a teda bude vo výškach 10 mrakodrap 6, 7, 8 a 9 a teda bude vo výškach 10 9 9 6 4 2 . 9 9 6 4 2 .
![Page 5: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/5.jpg)
1. 1. MožnosťMožnosť
Vyskúšať všetky možnostiVyskúšať všetky možnosti
Vstup:Vstup: 10 9 8 7 8 9 6 4 2 910 9 8 7 8 9 6 4 2 9
Možnosti:Možnosti: 10 (ok), 10 9 (ok), 10 8 (ok), 10 7 (ok), 10 8 (ok), 10 (ok), 10 9 (ok), 10 8 (ok), 10 7 (ok), 10 8 (ok),
10 9 (ok), 10 6 (ok), 10 4 (ok), 10 2 (ok), 10 9 10 9 (ok), 10 6 (ok), 10 4 (ok), 10 2 (ok), 10 9 (ok), 10 9 8 (ok), …, 10 8 7 (ok), …, 10 9 8 7 8 (ok), 10 9 8 (ok), …, 10 8 7 (ok), …, 10 9 8 7 8 (zle), ..., (zle), ..., 10 9 8 7 8 9 6 4 2 9 (zle)10 9 8 7 8 9 6 4 2 9 (zle)..
![Page 6: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/6.jpg)
AlternatAlternatívaíva
Previesť úlohu na grafPreviesť úlohu na graf
10
98 7
9 24
8
6
9
![Page 7: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/7.jpg)
Problém?Problém?
Existuje cyklus?Existuje cyklus?
Nie, lebo godzila skáče od najľavejšieho okraja Nie, lebo godzila skáče od najľavejšieho okraja smerom dopravasmerom doprava
![Page 8: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/8.jpg)
2. možnosť2. možnosť Prehľadávanie do šírkyPrehľadávanie do šírky
10
9
7
8
9
6
4
2
9
88
7
…
7
9
8
…
…
![Page 9: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/9.jpg)
3. mo3. možnosťžnosť
BacktrackBacktrack Vstup - Vstup - 10 9 8 7 8 9 6 4 2 9 10 9 8 7 8 9 6 4 2 9
10
98
6
98
7
4
24
2
… 2
![Page 10: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/10.jpg)
4. 4. možnosťmožnosť
Topologicky utriediť a použiť dynamické Topologicky utriediť a použiť dynamické programovanieprogramovanie
Vstup - Vstup - 10 9 8 7 8 9 6 4 2 910 9 8 7 8 9 6 4 2 9
9 8 7 4 5 3 10 6 2 1 (indexy)9 8 7 4 5 3 10 6 2 1 (indexy) 2 4 6 7 8 8 9 9 9 10 (v2 4 6 7 8 8 9 9 9 10 (výšky budov)ýšky budov) 0 1 2 3 3 4 0 4 5 6 0 1 2 3 3 4 0 4 5 6 (počet skokov) (počet skokov)
![Page 11: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/11.jpg)
4. 4. možnosťmožnosť
Pozor na poradie pri triedenPozor na poradie pri triedení budov rovnakých výšok í budov rovnakých výšok (záleží na poradí indexov)(záleží na poradí indexov)
Správne: Správne: 9 8 7 4 5 3 10 6 2 1 (indexy)9 8 7 4 5 3 10 6 2 1 (indexy) 2 4 6 7 8 8 9 9 9 10 (v2 4 6 7 8 8 9 9 9 10 (výšky budov)ýšky budov) 0 1 2 3 3 4 0 4 5 6 0 1 2 3 3 4 0 4 5 6 (počet skokov) (počet skokov) Nespávne:Nespávne: 9 8 7 4 3 5 2 6 10 1 (indexy)9 8 7 4 3 5 2 6 10 1 (indexy) 2 4 6 7 8 8 9 9 9 10 (v2 4 6 7 8 8 9 9 9 10 (výšky budov)ýšky budov) 0 1 2 3 4 3 5 3 0 6 0 1 2 3 4 3 5 3 0 6 (počet skokov) (počet skokov) DDúfam, že vidno rozdiel úfam, že vidno rozdiel !!!!!!!!
![Page 12: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/12.jpg)
Pre ktorPre ktorú možnosť sa ú možnosť sa rozhodnuť?rozhodnuť?
Faktory:Faktory: Z neznámych príčin nie je obmedzený Z neznámych príčin nie je obmedzený
počet vstupov N (pri väčine úloh je počet vstupov N (pri väčine úloh je rozsah N spomenutý) – prečo? Neviemrozsah N spomenutý) – prečo? Neviem
Musíme aj tak preskúmať všetky cestyMusíme aj tak preskúmať všetky cesty
Najideálnejší algoritmus: BacktrackNajideálnejší algoritmus: Backtrack
![Page 13: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/13.jpg)
Ako implementovať Ako implementovať backtrack?backtrack?
Popis myšlienky:Popis myšlienky: Pokúšame sa prejsť z najľavejšej budovy na Pokúšame sa prejsť z najľavejšej budovy na
najpravejšiunajpravejšiu Cestou zisťujeme, či sa dá na danú budovu skočiťCestou zisťujeme, či sa dá na danú budovu skočiť Ak áno, tak skočíme a pokračujeme predchádzajúcim Ak áno, tak skočíme a pokračujeme predchádzajúcim
krokomkrokom Ak nie, tak sa vrátime o budovu späť a na túto už Ak nie, tak sa vrátime o budovu späť a na túto už
neskáčeme. Skočíme na inúneskáčeme. Skočíme na inú Cestou si zapamätáme počet skokov a maximálny Cestou si zapamätáme počet skokov a maximálny
skokskok Nakoniec vypíšeme maximálny skokNakoniec vypíšeme maximálny skok
![Page 14: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/14.jpg)
Čo si pamätať?Čo si pamätať?
Výšky budovVýšky budov Počet skokov na každú budovu (aby sme Počet skokov na každú budovu (aby sme
sa vedeli vrátiť späť)sa vedeli vrátiť späť) Maximálny skokMaximálny skok Pozíciu i-tej budovyPozíciu i-tej budovy Počet budovPočet budov
![Page 15: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/15.jpg)
Popis algoritmuPopis algoritmu
1.1. Pokial i-ta budova Pokial i-ta budova < po< počet budov rob:čet budov rob:2.2. Ak výška ďalšej budovy Ak výška ďalšej budovy <=<= výška i-tej budovy, výška i-tej budovy,
tak skoč na ďalšiu budovu a zvýš počet tak skoč na ďalšiu budovu a zvýš počet skokov o 1skokov o 1
3.3. Inak zruš danú budovu, zníž počet budov o 1 Inak zruš danú budovu, zníž počet budov o 1 a vráť sa na predchádzajúcu budovua vráť sa na predchádzajúcu budovu
4.4. Ak je počet skokov Ak je počet skokov > > počet maximálnych počet maximálnych skokov, tak maxímalny počet je tento počet skokov, tak maxímalny počet je tento počet skokovskokov
5.5. Vráť sa na krok 1Vráť sa na krok 1
![Page 16: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/16.jpg)
Ukážka algoritmu v C++Ukážka algoritmu v C++
while(i<pocetBudov){while(i<pocetBudov){ if(v[i]>=v[i+1]){if(v[i]>=v[i+1]){ i++;i++; skoky[i]=skoky[i-1]+1;skoky[i]=skoky[i-1]+1; }else{}else{ skoky[i]=0;skoky[i]=0; for(int j=i;j<pocetBudov;j++) v[j]=v[j+1];for(int j=i;j<pocetBudov;j++) v[j]=v[j+1]; i--;i--; pocetBudov--; pocetBudov--; } } if(skoky[i]>maximum) maximum=skoky[i];if(skoky[i]>maximum) maximum=skoky[i]; }}
![Page 17: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/17.jpg)
TestTest
![Page 18: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/18.jpg)
Odhad časovej zložitostiOdhad časovej zložitosti
while(i<pocetBudov){while(i<pocetBudov){ if(v[i]>=v[i+1]){if(v[i]>=v[i+1]){ i++;i++; skoky[i]=skoky[i-1]+1;skoky[i]=skoky[i-1]+1; }else{}else{ skoky[i]=0;skoky[i]=0; for(int j=i;j<pocetBudov;j++){for(int j=i;j<pocetBudov;j++){ v[j]=v[j+1];v[j]=v[j+1]; }} i--;i--; pocetBudov--; pocetBudov--; } }
}}
O(N*N) = O(N^2)
![Page 19: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/19.jpg)
Odhad pamäťovej Odhad pamäťovej zložitostizložitosti
Pole výšok budov (integer)Pole výšok budov (integer) Pole skokov budov (integer)Pole skokov budov (integer)
![Page 20: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/20.jpg)
ZdrojZdroj
http://www.ksp.sk/ksp2.0/wiki/Zadania/26http://www.ksp.sk/ksp2.0/wiki/Zadania/26-1z-1z
![Page 21: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/21.jpg)
Ďakujem za pozornosťĎakujem za pozornosť
![Page 22: Osaka pod Godzillou Príklad prvého kola zimnej časti 26. ročníka KSP](https://reader036.vdocuments.pub/reader036/viewer/2022062321/5681371d550346895d9ea99b/html5/thumbnails/22.jpg)