Sample Solutions CTU Open Contest 2014 Czech Technical University in Prague.

Slides:



Advertisements
Podobné prezentace
PLANARITA A TOKY V SÍTÍCH
Advertisements

Dopravní úloha Literatura Kosková I.: Distribuční úlohy I.
X EXEL.
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
Neurčitý integrál. Příklad.
Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]
10. Dynamické datové struktury
VISUAL BASIC Práce se soubory.
Algoritmy I Cvičení č. 2. Cíl hodiny Datové typy a přetypování (int, float, double, bool, char, long, short) Konstanty – Celočíselné Desítkové – 15, 0,
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Sample Solutions CTU Open Contest ANALOG CLOCK.
Sample Solutions CTU Open Contest 2012 Czech Technical University in Prague.
Algoritmy I Cvičení č. 4.
Algoritmy I Cvičení č. 3.
Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy Řešení nelineárních rovnic Numerická integrace Lineární.
ADT Strom.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Metody řazení s lineární časovou složitostí
Příklady z Matlabu 4 Příklady na řídící příkazy , IF , SWITCH , FOR , WHILE , příkazy vstupu a výstupu INPUT a DISP.
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
Binární stromy, AVL stromy
Matematické metody v ekonomice a řízení II
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Řadicí algoritmy autor: Tadeáš Berkman.
VY_32_INOVACE_55_MS_Word_IV. Autor : Trýzna Stanislav Školní rok : 2011/2012 Určeno pro : šestý ročník Předmět: informatika Téma : základní orientace.
C – strukturované příkazy
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Konstrukce trojúhelníku
Stromy.
KIV/PPA1 cvičení 7 Cvičící: Pavel Bžoch. Osnova cvičení Zadání samostatné práce –Vysvětlení nejasností –Způsob odevzdání –Hodnocení Řazení Vyhledávání.
Algoritmizace a programování Třídící algoritmy - 12
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_259 Název školyGymnázium, Tachov, Pionýrská 1370 Autor Ing. Roman Bartoš Předmět Informatika.
Příklady v jazyku C – část 3
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
Sorty Bubble, Insert a Quick
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Nerovnice v podílovém tvaru
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
C – switch Mgr. Lenka Švancarová. switch syntaxe switch (výraz) { case hodnota_1: příkaz(y)_ve_větvi_1; case hodnota_2: příkaz(y)_ve_větvi_2; … default:
Grafický zápis algoritmů (vývojové diagramy) Test na trojúhelník (trojúhelníková nerovnost) Maximum ze tří čísel s použitím pomocné proměnné Pravoúhlý.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Průměr Maximum Minimum
Nerovnice v součinovém tvaru
Číselné soustavy dekadická binární hexadecimální
ČÍSELNÉ SOUSTAVY.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
C – cyklus do-while Mgr. Lenka Švancarová.
Sample Solutions CTU Open Contest Alea Alea  Vygenerování posloupnosti hodů  Zkoušení všech možností  Již spočítané varianty se ukládají (dynamické.
NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6.
Množina bodů dané vlastnosti
Inf Cykly ve vývojových diagramech
C# konzole – Podíl dvou čísel, podmínka IF
STROMY A KOSTRY Stromy a kostry - odst. 3.2.
Sčítání buněk podle zadaných podmínek
Jakub Brodský Ondřej Radosta
Konstrukce trojúhelníku
Množina bodů dané vlastnosti
ALG 07 Selection sort (Select sort) Insertion sort (Insert sort)
Konstrukce trojúhelníku
Množina bodů dané vlastnosti
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Konstrukce trojúhelníku
AVL a B-stromy cvičení Radek Mařík.
Konstrukce trojúhelníku
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Sample Solutions CTU Open Contest 2014 Czech Technical University in Prague

KOLONIE

Kolonie – základní úvaha  Komplexy lze spojovat libovolně…  … a ve vesmíru je místa dost.  => Jde spojit cokoli s čímkoli pouze jednou stranou (na tvaru vlastně moc nezáleží)

Kolonie – postup Z toho plyne:  Jedna buňka: 6 oken  Dvě buňky: 10 oken  n buněk: 6.n – 2 * počet spojů  => Při čtení buněk počítáme sousedy, za každého odečteme 2 okna

Kolonie – princip řešení  Jakékoli 2 komplexy s a a b okny můžeme spojit a získat a+b-2 oken  … pak už to „jen“ implementovat …

MOST

Most – myšlenka  Jak obecně vypadá optimální spoj? X X

Most – myšlenka  Každý řádek způsobí o 1 delší spoj  => „diagonála“ je stejně daleko X X X X X XX

Most – princip  => Stačí si pamatovat nejlepší možnost pro levý i pravý břeh

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX X

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX X X

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX X X X

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX X X X X

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX X X X X XX

Most – princip  Nejlepší pro levý i pravý břeh  S každým řádkem se o 1 „zhorší“ XX XX X X X X XX X

STAVITEL

Stavitel – zadání  Dosadit čísla, když známe maximum každého řádku a sloupce 2 ?

Stavitel – jak na to?  Maximum je docela jednoduché...  => dáme minimum obou čísel

Stavitel – jak na to?  Maximum je docela jednoduché...  => dáme minimum obou čísel

Stavitel – minimum  Minimální budova je zajímavější...  Začneme od největšího čísla

Stavitel – minimum  Minimální budova je zajímavější...  Potom druhé největší…

Stavitel – minimum  Minimální budova je zajímavější...  A třetí…

Stavitel – minimum  Minimální budova je zajímavější...  … to tam ale máme dvakrát …

Stavitel – dotažení  … a tak dále …  Ale ještě něco: Jak rychle hledat „největší číslo“?  Na pořadí na vstupu ve skutečnosti vůbec nezáleží…  Na pořadí na vstupu ve skutečnosti vůbec nezáleží…  (řádky/sloupce jsou nezávislé)

Stavitel – řešení  Seřadíme oba seznamy dle velikosti    Stejné první číslo:  Započítáme jednou a odebereme  Různá první čísla:  Započítáme větší a odebereme

Stavitel – řešení  Seřadíme oba seznamy dle velikosti    Výsledek: 

LODĚ

Lodě – „myšlenka“  Vyšší dimenze mají výrazně lepší poměr cena/hmotnost  Navíc jsou hmotnosti dělitelné: …  => Místo 3 předmětů dimenze n bereme 1 předmět dimenze n+1

Lodě – řešení  => Místo 3 předmětů dimenze n bereme 1 předmět dimenze n+1  => Od každé dimenze maximálně 2ks  Převod do trojkové soustavy…  Převod do trojkové soustavy…

VISIBLE

Visible – co s tím?  „3D geometria je fujky fujky…“ (Mimino, říjen 2014)  … naštěstí je „jenom“ kostičková

Visible – postup  Které kostičky protíná úsečka  Stačí celočíselná aritmetika

Visible – postup  Které kostičky protíná úsečka  Porovnáme s výškou terénu

Visible – postup  Které kostičky protíná úsečka  Porovnáme s výškou terénu

Visible – postup  Které kostičky protíná úsečka  Porovnáme s výškou terénu

Visible – postup  Které kostičky protíná úsečka  Pozor při přesném průsečíku

KAREL

Karel – simulace spuštění  Spustíme program z každého místa  Hlídáme, zda jsme se nezacyklili (pamatujeme si stav, kde jsme byli)  Pozice  Natočení  Aktuální příkaz programu

Karel – simulace spuštění  Při spuštění z nového políčka využijeme dříve vyzkoušené stavy  Pozice  Natočení  Aktuální příkaz programu  => maximálně možných stavů (stačila i rekurze)

MORE

More – analogie  Klasická binární soustava  Odzadu nahrazuji jedničky nulami  První nulu nahradím 1 a skončím

More – postup  Negabinární soustava  Jen o maličko složitější  Střídají se znaménka  Změna na správnou stranu => konec  Jinak se posunu o pozici dál

More – kód char c = '0'; for (int i = sb.length()-1; i>=0; --i) { char c2 = c=='0'?'1':'0'; if (sb.charAt(i) == c) { sb.setCharAt(i, c2); break; } sb.setCharAt(i, c); c = c2; }

SELF

Self – princip  Jak vypadá platná cesta?  Spirála

Self – princip  Jak vypadá platná cesta?  Může se ale zatáčet i dovnitř

Self – drobná komplikace  Jak vypadá platná cesta?  Může se to i jednou změnit

Self – zobecnění  Část je spirála směrem ven  Druhá část spirála směrem dovnitř  => Stačí kontrolovat cca 6 posledních úseků

Self – řešení while (scanf("%d", &n) == 1) { int right0=0, bot0=0, left=0, top=0, right=0, bot=0, norig=n; while (n-- > 0) { // out-bound spiral scanf("%d", &x); nxt = x - right; if (nxt < -right0) { left = nxt; break; } else if (nxt <= left) { left = nxt; top = -bot0; break; } right0 = bot0; bot0 = left; left = top; top = right; right = bot; bot = nxt; } while (n-- > 0) { // in-bound spiral (inside a rectangle) scanf("%d", &x); nxt = x - bot; if (nxt >= top) break; top = right; right = bot; bot = left; left = nxt; } printf((n < 0) ? "OK\n" : "%d\n", norig-n-1); while (n-- > 0) scanf("%d", &x); }

LENGTHY

Lengthy – zadání  Permutace uzlů stromu s nejdelší celkovou (uzavřenou) cestou

Lengthy – princip  Nalezneme „těžiště“ stromu (uzel, jehož žádný podstrom nemá více než ½ všech uzlů)

Lengthy – princip  Pak už stačí střídat podstromy  Použít lze i uzel sám

Lengthy – proč to funguje  Každá cesta jde přes „těžiště“  => Každá hrana se použije tolikrát, kolik je uzlů na její „menší“ straně  Více to nejde (každé řešení vypadá takto)

VALIDATE

Validate  Myšlenka není těžká  Obtížnější implementace

Validate – postup  Rozdělení úseček podle směru (a pozice)  V každém směru sloučit překryvy  Seřazení a spojení intervalů  …..

DOTAZY

Autoři úloh Josef Cibulka Michal „Mimino“ Danilák Zdeněk Dvořák Martin Kačer … a otcové zakladatelé … a otcové zakladatelé A tradičně náměty: Radek Pelánek