Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB. 30.04.2015



Relevanta dokument
UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Problem: FIL File Paths

Tentaupplägg denna gång

Grunderna i stegkodsprogrammering

Bygga hus med LECA-stenar

Programmeringsolympiaden 2012 Kvalificering

kl Tentaupplägg

Föreläsning 3.1: Datastrukturer, en översikt

Wienerprocesser. Finansiell statistik, vt-05. Enkel slumpvandring. Enkel slumpvandring. Varför: model för aktiekurs (dock med aber...

Programmeringsuppgifter 1

Föreläsning 6: Introduktion av listor

Får jag be om ordet!

Sidor i boken , , 3, 5, 7, 11,13,17 19, 23. Ett andragradspolynom Ett tiogradspolynom Ett tredjegradspolynom

Repetitionsuppgifter i Matematik inför Basår. Matematiska institutionen Linköpings universitet 2014

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Senaste revideringen av kapitlet gjordes , efter att ett fel upptäckts.

Chapter 3: Using Classes and Objects

1. Skriv = eller i den tomma rutan, så att det stämmer. Motivera ditt val av tecken.

Uppgift 1. Kylskåpstransporter

Taltaggning. Rapport av Daniel Hasselrot , 13 oktober 2003

Lathund för webbredaktörer. Så skriver du på webben

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

SPELREGLER. 2-4 deltagare från 10 år

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

Programmeringsolympiaden 2008 Kvalificering

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

A new exciting outdoor target game

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Uppgift 1 ( Betyg 3 uppgift )

Tentaupplägg denna gång

Enkäten inleds med några frågor om demografiska data. Totalt omfattar enkäten 85 frågor år år år. > 60 år år.

1. 20 identiska bollar skall delas ut till fem flickor och fem pojkar. På hur många olika sätt kan detta ske om

5 Grundläggande in- och utmatning

Clicker 5. Lathund kring de vanligaste och mest grundläggande funktionerna för att komma igång med Clicker. Habilitering & Hjälpmedel

TATA42: Föreläsning 10 Serier ( generaliserade summor )

Bouleträning. (Ovanstående text är inspirerad av Anders Gerestrands hemsida: geocities.com/boulesidan.)

1 Ändra kolumnbredd och radhöjd

Konfigurera Xenta från Point

Google Apps For Education

Uppgift 1 (Oläsliga krypterade meddelanden)

Användarmanual HOIF.org

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

F5 Introduktion till digitalteknik

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

Testa din hörsel. - det är inte svårt

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Sta. Sta. Sta. ulricaelisson.se. Scratch STARTA PROVA KODEN KÖR! TIPS. Rita en ny sprite. Eller välj en från mappen

8-4 Ekvationer. Namn:..

Automater. Matematik för språkteknologer. Mattias Nilsson

Inlämningsuppgift 4 NUM131

Enhetlig utformning av lägenhetsnummer

Storräkneövning: Sannolikhetslära

OBS - ranking NYTT RANKINGSYSTEM. Jan-Erik Thomasson INNEHÅLL

52101 Utforska siffror

Hur påverkar olika system av vårdval entreprenören?

TAIU07 Matematiska beräkningar med Matlab

Förberedelser: Sätt upp konerna i stigande ordningsföljd (första inlärningen) eller i blandad ordningsföljd (för de elever som kommit längre).

Uppgift 2 Betrakta vädret under en följd av dagar som en Markovkedja med de enda möjliga tillstånden. 0 = solig dag och 1 = regnig dag

9-1 Koordinatsystem och funktioner. Namn:

ATT LETA AVELSDJUR. 28 mars

Multiplikation genom århundraden

Bonusmaterial till Lära och undervisa matematik från förskoleklass till åk 6. Ledning för att lösa problemen i Övningar för kapitel 5, sid

75059 Stort sorteringsset

STÄNG AV FÖNSTER. Regler FLAGGSPECTRUM I FLAGGSPECTRUM II FLAGGSPECTRUM III FLAGGSPECTRUM STJÄRNSPEL

Facit till Några extra uppgifter inför tentan Matematik Baskurs. x 2 x

Föreläsning 11. Giriga algoritmer

Objektorienterad programmering D2

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

känna till några vanliga myter och motiv i litteraturen, vilka speglar frågor som har sysselsatt människor under olika tider

Uppgift 1 ( Betyg 3 uppgift )

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

BEDÖMNINGSSTÖD. till TUMMEN UPP! matte inför betygssättningen i årskurs 6

Möbiustransformationer.

Minnes anteckningar från BPSD resan.

Switch Driver 5. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Tentamensinstruktioner

Handbok Kiriki. Albert Astals Cid Eugene Trounev Översättare: Stefan Asserhäll

GARAGEBAND En steg för steg guide hur du tar dig från idé till färdig låt.

Kontakt: Mikael Forsman Användarmanual för VIDAR 4.0

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Arbetsplan Snäckans förskola 2008

Kommuniceramer än ord

Idéskrift. Avtalsuppföljning för transportköpare inom miljö och trafiksäkerhet

E-handeln 2014 SILENTIUM AB COPYRIGHT

A4-ark 1, framsida. A4-ark 1, baksida. A4-ark 2, framsida. A4-ark 2, baksida

Egenskaper och inställningar för QuickScan och förhandsgranskningsfönstret

Handledning alternativa lönemodellen. En handledning skapad av SLA och Kommunal

UPPGIFT 2 KVADRATVANDRING

Digital Display VDS / Bus2

Några övningar att göra

FÖRELÄSNING 1 ANALYS MN1 DISTANS HT06

Användarmanual Jobb i Stan. CV-Handboken. Registrering, jobbsökning mm. Copyright Aditro. All rights reserved.

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Förhandling - praktiska tips och råd

Skriv in sökvägen sam.sll.se

Här kan du välja befintligt upplägg eller skapa ett nytt. Klicka på edit uppe till höger för att redigera och/eller skapat nytt.

Föreläsning 4: Poster

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

TDP Regler

varandra. Vi börjar med att behandla en linjes ekvation med hjälp av figur 7 och dess bildtext.

Transkript:

Problem: BOW Bowling swedish BOI 0, dag. Tillgängligt minne: 6 MB. 30.04.0 Byteasar tycker om både bowling och statistik. Han har skrivit ner resultatet från några tidigare bowlingspel. Tyvärr är några tecken i hans anteckningar suddiga, och är oläsbara. Byteasar ber dig skriva ett program som beräknar antalet distinkta spel som stämmer överens med hans anteckningar. Regler för Bowling Ett bowlingspel består av n uppställningar: n enkla uppställningar och en sista uppställning. I ett vanligt spel är n = 0. I början av varje uppställning ställs 0 käglor längst bort på banan and en spelare får som mest två (eller tre för sista uppställningen) försök (kast) att kasta ett bowlingklot längs banan för att välta så många käglor som möjligt. Varje uppställning betecknas med två (för en enkel uppställning) eller tre (för den sista uppställningen) tecken. För varje kast får spelaren en grundpoäng som ges av det totala antalet käglor som vältes med kastet. En spelares grundpoäng för en uppställning är summan av grundpoängen för alla kast under uppställningen. Om spelaren välter alla 0 kägglor i en enkel uppställning (och därmed får 0 grundpoäng) så får spelaren dessutom ytterligare bonuspoäng. För en enkel uppställning gäller följande: Om spelaren välter alla 0 kägglor med första kastet i uppställningen så får hon en strike och uppställningen avslutas. Som bonuspoäng får hon summan av grundpoängen för de två nästa kasten. En strike betecknas x-. Om spelaren välter alla 0 käglor med hjälp av båda kasten i en uppställning får hon en spärr. Som bonuspoäng får hon grundpoängen för nästa kast. En spare betecknas A/, där A är antalet kägglor som vältes med uppställningens första kast. Om spelaren har vält 9 eller färre kägglor efter båda kasten får spelaren bara grundpoängen. En sådan uppställning betecknas AB, där A är ett ensiffrigt tal som anger antalet kägglor som vältes med första kastet, och B är ett ensiffrigt tal som anger antalet kägglor som vältes med det andra kastet (A+B < 0). Notera att bonuspoäng räknas till den uppställning där bonusen (en strike eller en spare) uppnåddes, trots att den beror av kast i andra uppställningar. För den sista uppställningen gäller följande: Från början har spelaren två kast i den här uppställningen. Om 9 eller färre käglor vältes med de två kasten avslutas uppställningen. Annars (om de två första kasten är en spärr eller det första kastet är en strike) så får spelaren ett tredje kast i uppställningen. om spelaren välter alla käglor i något av de tre kasten, så ställs samtliga käglor upp igen inför nästa kast. Poängen för den sista uppställnignen är det totala antalet käglor som välts (notera att inga bonuspoäng fås för strikes eller spärrar). Sista uppställningen kan se ut på sju olika sätt och betecknas som följer (där A och B är ensiffriga tal): v. 3 Bowling /3

Beteckning Beskrivning Uppställningspoäng xxx tre strikar 30 xxa två strikar följt av ett kast som välte A käglor 0 + A xa/ en strike och en spärr där A käglor vältes med första kastet 0 xab en strike följt av två kast som välte A resp. B käglor (A+B < 0) 0 + A + B A/x en spärr där A käglor vältes med första kastet följt av en strike 0 A/B en spärr där A käglor vältes med första kastet följt av ett sista 0 + B kast som välte B käglor AB- två kast som välte A respektive B kägglor (A + B < 0) A + B Ett spel beskrivs av en sekvens av n + tecken. Efter spelets slut kan den totala poängen efter varje uppställning beräknas. Till exempel kan ett spel med n = 0 uppställningar beskrivas av 08x-7//x-x-344/0/x, där spelarens poäng efter respektve uppställningar var följande: Indata Uppställning Beteckning Grundpoäng Bonuspoäng Uppställningspoäng Totalt 08 0 + 8 8 8 x- 0 7 + 3 0 8 3 7/ 7 + 3 40 4 / + 8 0 0 60 x- 0 0 + 8 6 x- 0 + 3 97 7 3 + 3 0 8 44 4 + 4 8 0 9 / + 9 0 0 0 sista 0/x 0 + 0 + 0 0 40 Första raden av indata innehåller ett heltal q ( q ), som anger antalet testfall. Därefter följer 3q rader som beskriver testfallen. Varje testfall beskrivs av tre rader av indata. Den första raden i varje testfalls beskrivning innehåller ett heltal n ( n 0), som anger antalet uppställningar. Andra raden innehåller en sekvens av n + tecken som beskriver spelet enligt Byteasars anteckningar. Suddiga tecken har ersatts av?. Tredje raden innehåller n heltal, den totala poängen efter varje uppställning, separerade av mellanslag. I varje tal är antingen alla siffror läsbara, eller så är alla siffror suddiga. Tal där alla siffror är suddiga har ersatts av -. Utdata Ditt program ska skriva ut q rader, en rad per testfall i samma ordnings som i indatan. För varje testfall ska programmet skriva ut ett heltal, antalet möjliga distinkta spel som stämmer överens med testfallet. Två spel anses olika om och endast om de skiljer sig i åtminstone ett kast, dvs sekvenserna av (n + )-tecken är olika. Du kan anta att det finns åtminstone ett spel som stämmer överens med indata. Du kan anta att svaret får plats i en 64-bit signed integer. Exempel 0 v. 3 Bowling /3

08x-7//x?x-3??/??? 8-40 60 8 97 0 0 0 40 x-x-3?/00-37 4 9 0 Förklaring av exempel: I första fallet, i uppställning efter tecknet x är - det enda möjliga tecknet. I uppställning 8 fick spelaren 8 poäng totalt. Det finns 9 olika sätt den summan kan ha uppnåtts: 0 + 8, + 7,..., 8 + 0. Uppställning 9 gav inga bonuspoäng. Därför, gav första kastet i den sista uppställningen några poäng. För att få 0 poäng med de sista två kasten är en spare följt av en strike den enda möjligheten. Det ger 9 olika korrekta spel som stämmer överens med indata. I det andra testfallet stämmer alla tecken 0 till 9 överens med indata. Ytterligare testfall: I tävlingssystemet kommer vi erbjuda ytterligare exempelindata med flera testfall där n =. Poängsättning Deluppgift Begränsningar (för varje testfall) Poäng som mest sex? i indata 6 svaret är som störst 0 9 7 3 inga spel som innehåller x eller / stämmer överens med indata 6 4 sekvensen i indata avslutas med 00- (d.v.s., spelaren fick 0 poäng i sista uppställningen) 3 och de sista min(3, n) uppställningarnas poäng givna på tredje raden i indata är - inga ytterligare krav 8 v. 3 Bowling 3/3

Problem: EDI Textredigerare swedish BOI 0, dag. Tillgängligt minne: MB. 30.04.0 Byteasar är en programmerare som arbetar på en revolutionär textredigerare. I textredigeraren finns det två sorters operationer: den ena tillåter dig att redigera text i textredigeraren, och den andra låter dig ångra tidigare utförda operationer. En av de innovativa funktionerna i textredigeraren är en flernivåångringsoperation. Den fungerar som följer. Vi säger att en textredigeringsoperation är en operation på nivå 0. En ångringsoperation på nivå i (för i =,,...) ångrar den senaste operationen som är på nivå högst i och inte är ångrad. Till exempel kan en ångringsoperation på nivå endast ångra redigeringsoperationer, och en ångringsoperation på nivå kan ångra redigeringsnivåer men också ångringsoperationer på nivå (men inte ångringsoperationer på högre nivåer). Mer formellt, varje tidigare gjord operation kan vara i ett av två tillstånd: aktiv eller ångrad. Låt X vara en av operationerna. Precis efter att operation X utförts är den aktiv. Om X är en ångringsoperation på nivå i, letar vi upp den senast gjorda operationen som är aktiv på nivå högst i (som vi betecknar X ) och ändrar tillståndet av X till ångrad. Om X också var en ångringsoperation måste vi göra operationen som X ångrade (säg, X ) till aktiv. Vi fortsätter på samma sätt: så länge tillståndet av en ångringsoperation X j som tidigare hade ångrat en operation X j+ ändras, så måste vi också ändra tillståndet av operationen X j+ (som i sin tur kan resultera i ändringen av ytterligare operationer). Hela kedjan av förändringar avslutas när en textredigeringsoperation nås. För enkelhetens skull låter vi textinnehållet i redigeraren vara ett enda heltal s som kallas för redigerarens tillstånd (detta är satt till 0 i början). Varje redigeringsoperation anger med ett heltal vilket tillstånd redigeraren ska få. Redigerarens tillstånd beror bara på den senast utförda redigeringsoperationen som är aktiv. Låt oss betrakta ett exempel: följande tabell visar några operationer som Byteasar utförde, och redigerarens tillstånd efter att ha utfört varje operation. Symbolen R s betecknar en textredigeringsoperation som ändrar redigerarens tillstånd till s, medan symbolen Å i betecknar en ångringsoperation på nivå i. Operation R R R Å Å Å 3 R 4 Å Å Å R Textredigerarens tillstånd 0 4 0 Först utför Byteasar tre redigeringsoperationer. Redigerarens tillstånd ändras från 0 till, sen till, och till slut till. Sedan utför han två ångringsoperationer på nivå, som ångrar operationerna R 3 och R (vilket ändrar deras tillstånd till ångrad). Således återställdes tillståndet till. Den följande ångringsoperationen på nivå 3 ångrade den senaste operationen Å (och ändrar dess tillstånd till ångrad), vilket i sin tur återställer operationen R till att vara aktiv. Som ett resultat blev redigerarens tillstånd återigen. Operation Å ångrar operationen R 4, operationen Å ångrar återigen den återställda operationen R, och till slut ångrar operationen Å operationen R. Indata Den första raden av indata innehåller ett positivt heltal n, antalet operationer som Byteasar utförde. De nästa n raderna innehåller beskrivningen av operationerna, one per rad. Varje rad är ett heltal a i ( n a i n, a i 0). Om a i > 0 så specifierar den en redigeringsoperation som ändrar redigerarens tillstånd till a i. Om a i < 0 så specifierar den en ångringsoperation på nivå a i. Du kan anta att för varje ångringsoperation finns det någon aktiv operation på lägre nivå att ångra. v. 3 Textredigerare /

Utdata Ditt program ska skriva ut n rader. Den i:te raden ska innehålla ett heltal, redigerarens tillstånd efter att ha utfört de första i operationerna från indata. Exempel - - -3 4 - - - 4 0 Poängsättning Deluppgift Begränsningar Poäng n 000 0 n 300 000 och det finns bara operationer R i och Å 3 n 300 000 och endast det sista talet i indata behöver vara korrekt (men de 8 första n talen måste vara heltal mellan 0 och n) 4 n 300 000 37 v. 3 Textredigerare /

Problem: NET Nätverket swedish BOI 0, dag. Tillgängligt minne: 6 MB. 30.04.0 Regeringen i Byteland har bestämt sig för att ansluta sitt lilla land till Internet, så att alla invånare kan delta i programmeringstävlingar och kolla på videos med söta katter. När det var dags att bygga nätverksstrukturen i landet gav de företaget Internet-Optimisterna Inc. uppdraget att ansluta alla Bytelands n datorer till varandra. Anslutningarna gjordes genom att vissa par av datorer fick direkta nätverksanslutningar till varandra via länkar på ett sådant sätt att varje par av datorer är anslutna via en sekvens av sådana länkar. Byteland är inte på något sätt ett rikt land, så för att minimera kostnaden byggdes nätverket i form av ett träd (d.v.s. det finns exakt n direkta länkar mellan datorerna). Alldeles för sent insåg man att denna lösning har en allvarlig brist. Om bara en enda länk i nätverket bryts så kommer nätverket att partitioneras så att vissa datorer inte kommer kunna kommunicera längre! För att förbättra nätverkets pålitlighet beslutade man att det i alla fall ska tåla att en enda länk bryts. Din uppgift är att hjälpa Internet-Optimisterna Inc. att förbättra nätverket på ett så billigt sätt som möjligt. Mer formellt, givet hur nätverket i Byteland ser ut (d.v.s. vilka n par av datorer som är anslutna via direkta länkar), bestäm det minsta antalet av nya länkar som måste läggas till så att alla datorer fortfarande är anslutna till varandra även om någon länk, vilken som helst, skulle brytas. Indata Den första raden av indata innehåller ett positivt heltal n (n 3), antalet datorer i Byteland. För enkelhetens skull är datorerna numrerade med heltal från till och med n. De följande n raderna innehåller par av heltal a och b ( a, b n, a b) som beskriver en länk mellan datorerna a och b. Utdata Den första raden av utdata ska innehålla ett heltal k, det minsta antalet länkar som måste läggas till i nätverket. På varje av de k följande raderna ska ditt program skriva ut ett par av heltal a och b ( a, b n, a b), numren på de datorer som ska anslutas med en länk. Länkarna kan skrivas ut i vilken ordning som helst. Om det finns fler än en lösning kan ditt program skriva ut vilken som helst av dessa. Exempel 6 3 4 4 6 4 3 4 6 3 6 v. 3 Nätverket /

8 3 3 4 4 3 6 3 7 3 8 6 7 3 4 8 3 6 7 8 4 Poängsättning Deluppgift Begränsningar Poäng n 0 8 n 000 4 3 n 00 000 37 v. 3 Nätverket /