Top Banner
Sample Sample Solutions Solutions CTU Open CTU Open Contest 2009 Contest 2009
51

Sample Solutions CTU Open Contest 2009

Jan 14, 2016

Download

Documents

Sian

Sample Solutions CTU Open Contest 2009. Arable Area. Arable Area. Projít po řádcích a pro každý z nich: Zjistit, které hrany ho protínají Seřadit je podle X souřadnice Zleva doprava projít a počítat, kolik čtverečků je uvnitř polygonu Vzhledem k rozměrům pole OK. Arable Area. Arable Area. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sample Solutions CTU Open  Contest 2009

SampleSampleSolutionsSolutions

CTU OpenCTU Open Contest 2009 Contest 2009

Page 2: Sample Solutions CTU Open  Contest 2009

Arable AreaArable Area

Page 3: Sample Solutions CTU Open  Contest 2009

Arable Area

Projít po řádcích a pro každý z nich: Zjistit, které hrany ho protínají Seřadit je podle X souřadnice Zleva doprava projít a počítat, kolik

čtverečků je uvnitř polygonu

Vzhledem k rozměrům pole OK

Page 4: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 5: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 6: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 7: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 8: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 9: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 10: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 11: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 12: Sample Solutions CTU Open  Contest 2009

Arable Area

Page 13: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

Základní princip je jednoduchý Sleduji hrany v daném pořadí Hrana doprava => přičtu vše, co je pod ní Hrana doleva => odečtu vše, co je pod ní

Pozor! Sčítáme pouze celé čtverečky ... ... ale odečítáme i přeškrtnuté!

Page 14: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 1515

MezisoučetMezisoučet 1515

Page 15: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 2222

MezisoučetMezisoučet 3737

Page 16: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 1818

MezisoučetMezisoučet 5555

Page 17: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 1010

MezisoučetMezisoučet 4545

Page 18: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 1212

MezisoučetMezisoučet 5757

Page 19: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 1313

MezisoučetMezisoučet 4444

Page 20: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

HranaHrana 1515

MezisoučetMezisoučet 2929

Page 21: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

VýsledekVýsledek 2929

Page 22: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

Nezáleží, kde začínám

Ale záleží na směru (po/proti ručičkám) Zkusím obojí, jen jedno vyjde kladné

Page 23: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

Jedním čtverečkem může jít víc hran To často nevadí, ale někdy ano

Na obrázku při červené hraně odečítám čtverečky, které žlutá hrana nepočítala!

Page 24: Sample Solutions CTU Open  Contest 2009

Area – alternativní řešení

Řešení: při odečítání ignoruji čtverečky kterými prochází ještě nějaká další hrana a tato hrana je NAD tou, se kterou pracuji

( toto je bohužel nejtěžší část řešení)

Page 25: Sample Solutions CTU Open  Contest 2009

Clock CaptchaClock Captcha

Page 26: Sample Solutions CTU Open  Contest 2009

Clock Captcha

Analyzovat každou pozici zvlášť

Ale pak posuzovat možné kombinace Příklad („otazník“ může být 1 nebo 2) ?5:27 jednoznačné ?3:27 není jednoznačné

Page 27: Sample Solutions CTU Open  Contest 2009

Digital DisplayDigital Display

Page 28: Sample Solutions CTU Open  Contest 2009

Digital Display

Přímočaré řešení

(ideálně samozřejmě „nakreslit“ do dvojrozměrného pole a až pak vypsat)

Page 29: Sample Solutions CTU Open  Contest 2009

IdentifiersIdentifiers

Page 30: Sample Solutions CTU Open  Contest 2009

Intriguing Identifiers

... tady snad není co dodat

Prostě implementovat všechny ty podmínky

Page 31: Sample Solutions CTU Open  Contest 2009

Letter LiesLetter Lies

Page 32: Sample Solutions CTU Open  Contest 2009

Letter Lies

Dynamické programování Acyklický graf => topologické uspoř.

Pro každou větu a každou délku: Sečteme možnosti ze všech předch. vět Pouze zvětšíme délku o 1

Nakonec sečteme ze všech zakončení

Page 33: Sample Solutions CTU Open  Contest 2009

Letter Lies

Všechy možnosti předchozích vět pro délku 0 sečteme a zapíšeme do délky 1

0 1 2 3 4 5

0 4 4 1 2 3

0 1 2 3 4 5

0 1 2 1 0 0

0 1 2 3 4 5

1 0 0 0 0 0

0 1 2 3 4 5

Page 34: Sample Solutions CTU Open  Contest 2009

Letter Lies

Všechy možnosti předchozích vět pro délku 0 sečteme a zapíšeme do délky 1

0 1 2 3 4 5

0 4 4 1 2 3

0 1 2 3 4 5

0 1 2 1 0 0

0 1 2 3 4 5

1 0 0 0 0 0

0 1 2 3 4 5

1

Page 35: Sample Solutions CTU Open  Contest 2009

Letter Lies

Nyní pro délku 1 Součet uložíme délky 2 pro násl. větu

0 1 2 3 4 5

0 4 4 1 2 3

0 1 2 3 4 5

0 1 2 1 0 0

0 1 2 3 4 5

1 0 0 0 0 0

0 1 2 3 4 5

1 5

Page 36: Sample Solutions CTU Open  Contest 2009

Letter Lies

... a tak dále až do konce

0 1 2 3 4 5

0 4 4 1 2 3

0 1 2 3 4 5

0 1 2 1 0 0

0 1 2 3 4 5

1 0 0 0 0 0

0 1 2 3 4 5

1 5 6

Page 37: Sample Solutions CTU Open  Contest 2009

OpportunitiesOpportunities

Page 38: Sample Solutions CTU Open  Contest 2009

Odd Opportunities

Lichý

Sudý Spojíme liché po dvojicích

Page 39: Sample Solutions CTU Open  Contest 2009

Odd Opportunities

Lichý

Sudý A nyní „XOR“ spojení

Page 40: Sample Solutions CTU Open  Contest 2009

Odd Opportunities

Lichý

Sudý

Page 41: Sample Solutions CTU Open  Contest 2009

Odd Opportunities

Lichý

Sudý HOTOVO!

Page 42: Sample Solutions CTU Open  Contest 2009

PrimesPrimes

Page 43: Sample Solutions CTU Open  Contest 2009

Peculiar Primes

Lze řešit rekurzivně

2 x všechny kombinace z 2,3,5 3 x všechny kombinace z 3,5 5 x všechny kombinace z 5

2 3 5

Page 44: Sample Solutions CTU Open  Contest 2009

Peculiar Primes

Lepší směrem „dolů“

Interval [100,150] 2 x [50,75] 3 x [34,50] 5 x [20,30]

2 3 5

2 3 5

3 5

5

Page 45: Sample Solutions CTU Open  Contest 2009

Peculiar Primes

void solve(int min, int mult, int first, int last) {

int i;

if (last == 0) return;

if (first == 1) result[cnt++] = mult;

for (i = min; i < nump; ++i) {

int p = primes[i];

solve(i, mult*p, (first-1)/p+1, last/p);

}

}

Page 46: Sample Solutions CTU Open  Contest 2009

Robotic RailsRobotic Rails

Page 47: Sample Solutions CTU Open  Contest 2009

Robotic Rails

Nejkratší cesta => Dijkstrův algoritmus

Stav = Místo + Natočení

... mohu přes jedno místo projít 2x

(bylo možné počítat v celých číslech)

Page 48: Sample Solutions CTU Open  Contest 2009

Robotic Rails

Page 49: Sample Solutions CTU Open  Contest 2009

StocksStocks

Page 50: Sample Solutions CTU Open  Contest 2009

Suspicious Stocks

Lineární průchod

Pamatuji si, kolik nejvíce akcí mohu mít

Page 51: Sample Solutions CTU Open  Contest 2009

Autoři úlohAutoři úlohJosef Cibulka

Zdeněk Dvořák

Martin Kačer

Jan Kybic

Jan Stoklasa

(a Radek Pelánek )