63. ročník Matematické olympiády 2013/2014

Podobné dokumenty
67. ročník Matematické olympiády 2017/2018

Jednoduché cykly

61. ročník Matematické olympiády 2011/2012

Základy algoritmizace. Pattern matching

Studijní program Informatika, bakalářské studium. 2015, varianta A

Úlohy klauzurní části školního kola kategorie A

59. ročník Matematické olympiády 2009/2010

Cykly a pole

Úlohy krajského kola kategorie A

20 b. 45 b. 25 b. 20 b. Kolo J Klasické S. 9. Klasické R. 8. Klasické Č. 7. Klasické M. 5 b. 10 b. 5 b. 5 b. 3. Klasické

Zadání soutěžních úloh

Návody k domácí části I. kola kategorie B

PŘEDNÁŠKA 2 POSLOUPNOSTI

Korespondenční Seminář z Programování

Přijímací zkouška na MFF UK v Praze

Úlohy krajského kola kategorie C

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Programy na PODMÍNĚNÝ příkaz IF a CASE

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Úlohy klauzurní části školního kola kategorie B

1.3. Číselné množiny. Cíle. Průvodce studiem. Výklad

Hledání v textu algoritmem Boyer Moore

Variace. Mocniny a odmocniny

63. ročník matematické olympiády Řešení úloh krajského kola kategorie B. 1. Odečtením druhé rovnice od první a třetí od druhé dostaneme dvě rovnice

Přednáška 3: Limita a spojitost

CVIČNÝ TEST 37. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 5 III. Klíč 13 IV. Záznamový list 15

Složitost Filip Hlásek

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

pro bakalářské studijní programy fyzika, informatika a matematika 2018, varianta A

Dynamické programování

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Úlohy krajského kola kategorie C

Naproti tomu gramatika je vlastně soupis pravidel, jak

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

H {{u, v} : u,v U u v }

57. ročník Matematické olympiády 2007/2008

63. ročník Matematické olympiády 2013/2014

68. ročník Matematické olympiády 2018/2019

Programovací jazyk Pascal

Úlohy domácí části I. kola kategorie C

Dijkstrův algoritmus

55. ročník matematické olympiády

Návrh Designu: Radek Mařík

MATEMATICKÁ OLYMPIÁDA

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

REÁLNÁ FUNKCE JEDNÉ PROMĚNNÉ

Definice (Racionální mocnina). Buď,. Nechť, kde a a čísla jsou nesoudělná. Pak: 1. je-li a sudé, (nebo) 2. je-li liché, klademe

Úlohy klauzurní části školního kola kategorie A

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Úlohy krajského kola kategorie C

Úlohy domácí části I. kola kategorie C

Suffixové stromy. Osnova:

5 Orientované grafy, Toky v sítích

Přijímací zkouška na MFF UK v Praze

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Příklady z Kombinatoriky a grafů I - LS 2015/2016

4EK311 Operační výzkum. 5. Teorie grafů

CVIČNÝ TEST 35. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Standardní algoritmy vyhledávací.

II. kolo kategorie Z9

Jan Březina. 7. března 2017

6. ROČNÍK ŠKOLNÍ SOUTĚŽE V PROGRAMOVÁNÍ 2013

I. kolo kategorie Z7

63. ročník Matematické olympiády 2013/2014

MATEMATICKÁ OLYMPIÁDA

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

Řešení najdete na konci ukázky

Sbírka příkladů. verze

Matematika I 2a Konečná pravděpodobnost

MATEMATIKA základní úroveň obtížnosti

2.1 Pokyny k otevřeným úlohám. Výsledky pište čitelně do vyznačených bílých polí. 2.2 Pokyny k uzavřeným úlohám

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Matematická olympiáda ročník ( ) Komentáře k úlohám 2. kola pro kategorie Z5 až Z9. kategorie Z5 Z5 II 1 Z5 II 2 Z5 II 3

2.1 Pokyny k otevřeným úlohám. 2.2 Pokyny k uzavřeným úlohám TESTOVÝ SEŠIT NEOTVÍREJTE, POČKEJTE NA POKYN!

2. Svoje řešení pojmenujte podle čísel zadání úloh: uloha1.sgpbprj uloha4.sgpbprj

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Konečný automat. Jan Kybic.

68. ročník Matematické olympiády 2018/2019

CVIČNÝ TEST 22. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

Úvod do programování 6. hodina

1. Jordanův kanonický tvar

Základy matematické analýzy

Pravděpodobnost a její vlastnosti

Binární soubory (datové, typované)

pro každé i. Proto je takových čísel m právě N ai 1 +. k k p

Algoritmizace. 1. Úvod. Algoritmus

Magické čtverce. Tomáš Roskovec. Úvod

Metody síťové analýzy

Formální jazyky a gramatiky Teorie programovacích jazyků

68. ročník Matematické olympiády 2018/2019

Minimalizace KA - Úvod

ALGEBRA. Téma 5: Vektorové prostory

Dynamické programování UIN009 Efektivní algoritmy 1

Přednáška 6, 7. listopadu 2014

66. ročník Matematické olympiády 2016/2017

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Transkript:

63. ročník Matematické olympiády 2013/2014 Úlohy ústředního kola kategorie P 2. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Při soutěži je zakázáno používat jakékoliv pomůcky kromě psacích potřeb a přiděleného počítače (tzn. knihy, kalkulačky, mobily, apod.). Řešením každého příkladu je zdrojový kód programu zapsaný v programovacím jazyce Pascal, C nebo C++. Po skončení soutěže bude pro každou úlohu váš poslední odevzdaný program automaticky otestován pomocí předem připravených 10 sad testovacích vstupních dat. Každá sada je tvořena jedním nebo několika testovacími vstupy. Jeden bod získáte za každou sadu vstupů, kterou váš program celou správně vyřeší tzn. pro každý testovací vstup z této sady dá program správný výsledek ve stanoveném časovém a paměťovém limitu. Za každou úlohu tedy můžete získat 0 až 10 bodů. Sady vstupů jsou navrženy tak, aby každé korektní řešení získalo nějaké body, i když je založeno na neefektivním algoritmu. Časové a paměťové limity zajišťují, že plný počet bodů získá pouze efektivní řešení. Podrobnější informace o testovacích datech najdete na konci zadání každé úlohy. P-III-4 Nahoru a dolů Program: Vstup a výstup: Časový limit: Paměťový limit: nahorudolu.pas / nahorudolu.c / nahorudolu.cpp standardní vstup a výstup řádově sekundy 1 GB Jeníček měl posloupnost n celých čísel, každé z rozsahu od 0 do m. Pro každé dva po sobě jdoucí členy posloupnosti si zapsal znak <, =, nebo > podle toho, zda byl dřívější člen posloupnosti menší, stejný, nebo větší než pozdější člen posloupnosti. Například pro posloupnost (3, 1, 7, 7, 4) platí 3 > 1 < 7 = 7 > 4, takže Jeníček by si zapsal řetězec ><=>. Mařenka nezná Jeníčkovu posloupnost čísel. Zná pouze n, m a posloupnost znaků, které si Jeníček zapsal. Chtěla by ale původní posloupnost čísel (v rámci možností) zrekonstruovat. Část bodů za tuto úlohu můžete získat tím, že napíšete program, který najde libovolnou vyhovující posloupnost čísel (pokud vůbec nějaká existuje). Plný počet bodů dostanete za program, který navíc vždy najde takové řešení, v němž je součet členů posloupnosti nejmenší možný. Popis vstupu a výstupu Vstup je tvořen dvěma řádky. Na prvním z nich jsou dvě celá čísla n a m. Na druhém řádku je řetězec n 1 znaků, které si Jeníček zapsal. Na výstup vypište 1

jeden řádek a na něm n mezerami oddělených celých čísel zrekonstruovanou posloupnost čísel. Pokud žádná posloupnost odpovídající vstupním údajům neexistuje, vypište n-krát hodnotu 1. Omezení a hodnocení Je připraveno 10 testovacích sad vstupních dat, očíslovaných od 01 do 10. Za správné vyřešení každé sady získáte 1 bod. V sadách 01 až 05 akceptujeme libovolnou korektní posloupnost, v sadách 06 až 10 pouze posloupnost s nejmenším možným součtem členů. Velikosti a typ jednotlivých sad popisuje následující tabulka: sada omezení 01, 06 2 n 10 m = 10 9 jeden znak je > a všechny ostatní < 02, 07 2 n 20 m = 10 9 03, 08 2 n 1 000 m = 998 04, 09 2 n 75 000 0 m 10 9 v řetězci není znak = 05, 10 2 n 250 000 0 m 10 9 Příklady 5 1000000000 ><=> 1 0 1 1 0 Tento vstup by mimo jiné mohl patřit do sady 02 nebo do sady 07. Pokud by patřil do sady 02, akceptovali bychom třeba i odpověď 3 1 7 7 4, ale v sadě 07 je jedinou správnou odpovědí právě 1 0 1 1 0. 4 2 >>> -1-1 -1-1 Řetězec >>> popisuje čtyřprvkovou klesající posloupnost. Protože ale m = 2, můžeme použít jenom hodnoty 0, 1 a 2, takže takovou posloupnost nelze vytvořit. 2

P-III-5 Vyvážené řetězce Program: Vstup a výstup: Časový limit: Paměťový limit: vyvazene.pas / vyvazene.c / vyvazene.cpp standardní vstup a výstup cca 0,5 s 1 GB Řetězec nazveme vyváženým tehdy, když v něm mají všechna jeho písmena stejný počet výskytů. Vyvážené řetězce jsou například: aaaaa, badcx, bbaaab. Řetězec abacb vyvážený není například proto, že obsahuje dvě a, ale jen jedno c. V zadaném řetězci najděte nejdelší souvislý podřetězec, který je vyvážený. Hledaný podřetězec nemusí obsahovat všechny druhy písmen, která se vyskytují v původním řetězci. Například pro řetězec cbababac je správným řešením podřetězec bababa. Popis vstupu a výstupu Vstupem programu je jediný řádek, který obsahuje řetězec tvořený malými písmeny anglické abecedy. Délku řetězce označíme n, znaky řetězce očíslujeme zleva doprava od 0 do n 1. Na výstup vypište jeden řádek a na něm dvě celá čísla: index znaku, kterým hledaný podřetězec začíná, a index znaku, kterým tento podřetězec končí. Pokud existuje více různých optimálních řešení, najděte a vypište to z nich, které v řetězci začíná co nejdříve. Omezení a hodnocení Je připraveno 10 testovacích sad vstupních dat, očíslovaných od 01 do 10. Za správné vyřešení každé sady získáte 1 bod. Velikosti a typ jednotlivých testovacích dat popisuje následující tabulka: sada omezení 01 1 n 20 řetězec obsahuje jen písmena ab 02 1 n 1 000 řetězec obsahuje jen písmena ab 03 1 n 1 000 řetězec obsahuje jen písmena abcdefgh 04 1 n 1 000 řetězec obsahuje jen písmena abcdefgh 05 1 n 100 000 řetězec obsahuje jen písmena ab 06 1 n 100 000 řetězec obsahuje jen písmena abc, v žádném optimálním řešení nejsou použita všechna tři 07 1 n 100 000 řetězec obsahuje jen písmena abc 08 1 n 50 000 řetězec obsahuje jen písmena abcde 09 1 n 50 000 řetězec obsahuje jen písmena abcde 10 1 n 50 000 řetězec obsahuje jen písmena abcde 3

Příklady baab Optimálním podřetězcem je celý řetězec. baaab Optimálním podřetězcem je řetězec aaa. cbababac Příklad ze zadání. cbabadbabae Dřívější výskyt je ten správný. 0 3 1 3 1 6 1 4 4

P-III-6 ACGT Program: Vstup a výstup: Časový limit: Paměťový limit: acgt.pas / acgt.c / acgt.cpp standardní vstup a výstup řádově sekundy, u sad 09 a 10 zvýšeno na 15 s 1 GB Sestavení DNA Fragment DNA je posloupnost znaků z abecedy A, C, G, T. Získali jsme n fragmentů a označili je F 1,..., F n. Zjistili jsme také, které dvojice fragmentů mohou následovat bezprostředně po sobě. Sestavením DNA nazveme takovou posloupnost čísel fragmentů a 1, a 2,..., a k (1 a i n, některá čísla se mohou v posloupnosti opakovat), že každé dva po sobě jdoucí fragmenty mohou v daném pořadí po sobě následovat. Každému sestavení DNA přímo odpovídá řetězec znaků ACGT, který dostaneme spojením příslušných fragmentů. Příklad: Nechť n = 3, F 1 = CG, F 2 = AT a F 3 = TCC. Po sobě mohu následovat dvojice fragmentů (1, 2), (1, 3) a (2, 1). Korektním sestavením DNA pro tento případ je například posloupnost 2, 1 (které odpovídá řetězec ATCG) a také posloupnost 1, 2, 1, 3 (řetězec CGATCGTCC). Posloupnost 3, 1 ani posloupnost 1, 1, 2 nejsou korektní. Vzdálenost řetězců Pro dané dva řetězce P a Q definujeme jejich vzdálenost jako nejmenší počet změn, které je třeba provést, abychom z P získali Q (resp. naopak). Povolené změny jsou tří typů: přidání jednoho znaku (na libovolné místo v řetězci), smazání jednoho znaku (kteréhokoliv) a záměna jednoho znaku za jiný. Příklad: Nechť P = ATTA a Q = AGA. Zjevně nedokážeme převést P na Q jedinou změnou, jde to však provést dvěma změnami: nejprve smažeme jedno T a potom změníme druhé T na G. Proto mají tyto dva řetězce vzdálenost 2. Libovolný řetězec má sám od sebe vzdálenost 0. Soutěžní úloha Na vstupu dostanete popis fragmentů DNA a informaci, jak po sobě mohou tyto fragmenty následovat. Dále je na vstupu zadán řetězec R (opět tvořený znaky ACGT), velmi malé nezáporné celé číslo d a dva indexy fragmentů u a v (přičemž u v). Vaším úkolem je nalézt (jedno libovolné) sestavení DNA, které začíná fragmentem F u, končí fragmentem F v, a řetězec, který mu odpovídá, má od řetězce R vzdálenost nejvýše d. Můžete předpokládat, že žádný fragment nesmí následovat sám po sobě tedy že v seznamu přípustných dvojic nebudou záznamy tvaru (x, x). Můžete také předpokládat, že mohou-li po nějakém fragmentu F x následovat fragment F y i fragment F z, tak se liší první písmena F y a F z. 5

Popis vstupu a výstupu Na prvním řádku vstupu je zadán počet fragmentů n a počet přípustných dvojic m. Na následujících n řádcích jsou uvedeny jednotlivé fragmenty F 1 až F n. Na dalších m řádcích jsou dvojice čísel a i, b i, které vyjadřují, že po fragmentu a i může následovat fragment b i. Předposlední řádek vstupu obsahuje čísla d, u a v. Na posledním řádku vstupu je řetězec R. Na výstup vypište jeden řádek obsahující číslo 1, pokud žádné vhodné sestavení DNA neexistuje. Jinak vypište jeden řádek, který obsahuje jedno vhodné sestavení DNA tedy posloupnost indexů fragmentů oddělených mezerami. (Není nutné dosáhnout nejmenší možné vzdálenosti od R.) Omezení a hodnocení Je připraveno 10 testovacích sad vstupních dat, očíslovaných od 01 do 10. Sady 09 a 10 jsou veřejné a můžete si je stáhnout ze soutěžního prostředí. Za správné vyřešení každé sady získáte 1 bod. V následující tabulce f označuje součet délek fragmentů DNA a r délku řetězce R. Není-li uvedeno jinak, v sadách 01 až 08 platí n 1 000, m 4 000, f 50 000, r 50 000, d 5. V sadách 09 a 10 platí n 1 000, m 1 000, f 1 000 000, r 1 000 000, d 5. Navíc tyto vstupy obsahují reálná data, což například znamená, že mezi fragmenty na vstupu nenajdete mnoho podobných. Dodatečná omezení pro jednotlivé sady jsou následující: sada omezení komentář 01 d = 0 fragmenty musí sestavit přesně R 02, 03 n = 2, m = 1, f 1000, r 1000 jen dva fragmenty a jeden způsob jejich zřetězení 04, 05 n = 2, m = 1 06 d = 1 povolena nejvýše jedna chyba 07, 08 f 1000, r 1000 09, 10 bez dalších omezení 6

Příklady 3 3 CG AT TCC 1 2 2 1 1 3 0 1 3 CGATCGTCC 1 2 1 3 Toto je příklad ze zadání, hledaný řetězec dokážeme sestavit přesně. 4 4 CCC A T GGG 1 2 2 3 3 2 2 4 1 1 4 CCCATTGGG 1 2 3 2 4 Toto sestavení nám dá řetězec CCCATAGGG, který se od řetězce na vstupu liší jednou změnou. 4 4 CCC A T GGG 1 2 2 3 3 2 2 4 1 1 4 CCCAAAAGGG -1 Byly by zapotřebí aspoň dvě změny, povolenou ale máme nejvýše jednu. 7