51
Sample Sample Solutions Solutions CTU Open CTU Open Contest 2009 Contest 2009

Sample Solutions CTU Open Contest 2009

  • Upload
    sian

  • View
    108

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Citation preview

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 )