Problem: FIL File Paths



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

Programmeringsolympiaden 2015

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

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

Bruksanvisning Milestone 311 Daisy

UPPGIFT 2 KVADRATVANDRING

! "# # # $ # " % & # # '(") " " )## (")"#*+*(, ( - " ' # (") #. % % /

Programmeringsolympiaden 2018

UPPGIFT 1 TVETYDIGA DATUM

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

Programmeringsolympiaden 2008 Kvalificering

Programmeringsolympiaden 2014

UPPGIFT 1 V75 FIGUR 1.

UPPGIFT 1 VÄNSKAPLIGA REKTANGLAR

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

Allmänt om programvaror och filer i Windows.

Kom igång med. Windows 8. DATAUTB MORIN AB

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

Vi visar i denna guide hur man kommer igång med sin nychippade Xbox360. När vi skriver spel i denna guide så menar vi era JTAG/RGH preparerade spel.

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

Programmeringsolympiaden 2012 Kvalificering

eller Övningar i filhantering Tema: Mappar och filer i Windows samt Lagringsenheterna OBS! Endast för medlemmar i SeniorNet, Klubb Södertälje!

kl Tentaupplägg

Gör så här för att rapportera:

Utförliga regler för TRAX

Föreläsning 11. Giriga algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Programmeringsolympiaden 2017

Operativsystem och användargränssnitt

DUGGA Tentaupplägg

Visma Proceedo. Att logga in - Manual. Version 1.3 /

Programmeringsolympiaden 2011 Kvalificering

Kom igång med Advance Online portal med certifikatsverifiering

UPPGIFT 1 EURO. Utdata: Två rader, som för indata ovan, ser ut som följer: Före resan: bank 1 Efter resan: bank 3

Uppgift 1 ( Betyg 3 uppgift )

Grundkurs 1 IKT Filhantering

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Programmeringsolympiaden Final 6 maj 2004

Projektdokumentation för Othello

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

Tangentbord. Mike McBride Anne-Marie Mahfouf Översättare: Stefan Asserhäll

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Uppgift 1. Kylskåpstransporter

Tentaupplägg denna gång

kl Tentaupplägg

Genom att följa dessa steg lär du dig snabbt att spela onlinematcher... och som du kan se är det mycket enkelt, roligt och spännande!

Tentaupplägg denna gång

Komma igång med OneD. Allt på en plats

kl Tentaupplägg

NYHETER Skapa nyheten... 2 Välj Ny och Nyhet... 2 Skriv in nyhetens rubrik... 2 Nyheten hamnar överst i nyhetslistan

Skapa mappar, spara och hämta dokument

INSTALLERA OCH SPELA FYLGJA - EN GUIDE

Internet. En enkel introduktion. Innehåll:

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Programmeringsolympiaden 2016

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

B-ML 2012 SÅ HÄR ANVÄNDER DU DEN NYA GMAIL

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

UPPGIFT 1 WILL ROGERS FENOMEN

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Tentaupplägg denna gång

Datakurs, grund. Thor Stone Education. Datakurs, grund. (Windows 7) Copyright Torsten Nilsson

Kom igång med Windows 8.1

Lathund för fakturaspecifikation med rapportverktyget BusinessObjects, version 4.0. Version 1.0,

Chapter 3: Using Classes and Objects

Tentamen i Grundläggande programmering STS, åk

Programmeringsolympiaden 2009 Kvalificering

getsmart Grå Regler för:

kl Tentaupplägg

Programmering för alla!

Dokument i klassens aktivitet

Tentaupplägg denna gång

Svensk version. Inledning. Innehåll. Specifikationer BT100. Extra specifikationer BT100 S W E E X. C O M. BT110 - Sweex Bluetooth Class I Adapter USB

Miljön i Windows Vista

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Så här hanterar du din OneDrive i Office 365

BRUKSANVISNING. ver. 1.2

Webmail instruktioner

Lathund för Novell Filr

Skolbrottning i praktiken

MegTax CardCenterPro

Connection Manager Användarhandbok

Uppgift 1 ( Betyg 3 uppgift )

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

Hantera dina lokala arkiv i Lotus Notes

Viktigt! Vill du ha möjligheten att återställa originalbilarna utan hemladdning läs nedan om återställning innan du börjar med installationen!

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Bruksanvisning för hjälpbegäran

TDDI16: Datastrukturer och algoritmer

IT-körkort för språklärare. Modul 5: Ljud, del 2

Programmering. Scratch - grundövningar

INSTALLATIONSGUIDE MAC

För att du som användare skall kunna leva upp till de säkerhetskrav som ställs på dig måste du känna till. Lärare och Elever har olika krav: Lärare

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

kl Tentaupplägg

Tentamen i Programmering grundkurs och Programmering C

Lathund för BankID säkerhetsprogram

Transkript:

Problem: FIL File Paths swedish BOI 2015, dag 2. Tillgängligt minne: 256 MB. 1.05.2015 Byteasar tycker om att leva farligt. Han springer med saxar, skickar in lösningar på tävlingsproblem utan att testa exampelindata, och vill att alla sina filer ska ha filvägar som är precis så långa som operativ systemet tillåter (på Linux, till exempel, är det 4095 tecken). När Byteasar arbetar på någon annans dator kan det hända att vissa filer inte uppfyller hans krav. I det fallet försöker han att introducera symboliska länkar (symlänkar) och skapa filvägar med hjälp av dem. Du har fått i uppgift att bestämma, för varje fil i filsystemet, om det är möjligt att introducera en enda symbolisk länk (med en förbestämd längd), så att filen kan refereras till med en filväg av längd precis k tecken. Om en fil med namn file är sparad i en kedja av mappar dir1, dir2,..., dirj så är dess absoluta filväg /dir1/dir2/.../dirj/file. Rotmappen kan refereras till med uttrycket / och en fil som är sparad direkt i den mappen har den absoluta filvägen /file. En symbolisk länk är en namngiven genväg till en mapp, som kan placeras i vilken mapp i filsystemet som helst (i det här problemet är en symlänk till en fil inte tillåten). Med hjälp av en symlänk så kan vi uppnå alternativa filvägar. Till exempel, om vi introducerade en symlänk till / med namnet hello i /, så skulle /dir/file, /hello/dir/file och /hello/hello/dir/file referera till samma fil och ha filvägar med olika längd. Som ett ytterligare exempel, med en symlänk till / med namnet hi i dir kan vi få filvägarna: /dir/file, /dir/hi/dir/file, /dir/hi/dir/hi/dir/file. Notera att det är tillåtet för en symlänk att peka uppåt, nedåt eller i sidled i filsystemets hierarki, det är tillochmed tillåtet att peka till mappen där symlänken är placerad. I det här problemet är filvägskomponenterna./,../ och // inte tillåtna i filvägar. Indata Första raden i indata innehåller tre positiva heltal: n (antalet mappar som inte är rotmappen), m (antalet filer), och k (den eftersökta längden för en filväg). Rotmappen numreras med 0 och de andra mapparna numreras från 1 till n. Filerna numreras från 1 till m. Andra raden innehåller längden s på den symlänk som får användas (vi bryr oss inte om namnet i sig och utgår ifrån att det inte är detsamma som något annat i filsystemet). Därefter följer n rader som beskriver mapparna i filsystemet. Rad i av dessa beskriver mapp i och består av två heltal p i och l i. De anger att mapp i har ett namn av längd l i och dess föräldramapp (d.v.s den mapp som mapp i är placerad direkt i) har nummer p i. Det är garanterat att p i < i. Slutligen följer m rader med beskrivning av filerna i filsystemet. Rad j av dessa beskriver fil j och består av heltal p j och l j. De anger att fil j har ett namn av längd l j och att filen ligger i mapp p j. Alla filer och mappar har namn med positiv längd och deras absoluta filvägar kommer att vara som mest k tecken lång. Utdata Ditt program ska skriva ut m rader, en för varje fil. Rad j ska innehålla antingen eller NO, som besvarar frågan: Är det möjligt att, genom att introducera en symlänk av längd s, skapa en filväg av längd precis k som refererar till fil j? v. 3.1 File Paths 1/2

Exempel 2 4 22 2 0 1 1 5 2 13 2 10 1 4 0 7 NO Förklaring av exempel: Låt oss kalla vår symlänk LL, mapparna a och bbbbb, och filerna ccccccccccccc, dddddddddd, eeee och fffffff. Rotmappen innehåller mappen a och filen fffffff; mappen a innehåller mappen bbbbb och filen eeee; och slutligen mappen bbbbb innehåller filerna ccccccccccccc och dddddddddd. / -- a -- bbbbb -- ccccccccccccc +-- dddddddddd +-- eeee +-- fffffff I det första fallet är den absoluta filvägen /a/bbbbb/ccccccccccccc redan av längd k, så vi behöver inte använda vår symlänk. I det andra fallet kan vi introducera symlänken /a/ll -> /a och referera till /a/ll/bbbbb/dddddddddd. I det tredje fallet kan vi introducera symlänken /a/ll -> / och referera till /a/ll/a/ll/a/ll/a/eeee. I det fjärde fallet kan vi inte uppnå vårt mål oavsett vilken symlänk vi väljer. Poängsättning För alla deluppgifter gäller 1 k, s 1 000 000. Deluppgift Begränsningar Poäng 1 n, m 500 33 2 n, m 3 000, symlänken behöver som mest användas en gång per fil 33 3 n, m 3 000 34 v. 3.1 File Paths 2/2

Problem: HAC Hacker swedish BOI 2015, dag 2. Tillgängligt minne: 256 MB. 1.05.2015 Hackern Byteasar har kvalificerat sig till årets IHO, Internationella Hackingolympiaden. En uppgift handlar om att tävla mot en systemoperatör. Det finns n datorer numrerade från 1 till n, länkade i en ring, d.v.s. dator i och dator i + 1 är länkade (för i = 1,..., n 1), och dator n och 1 är länkade. Tävlingen är ett spel mellan hackern och systemoperatören: Byteasar gör första draget. Därefter turas operatören och Byteasar om. I sitt första drag väljer Byteasar en dator och hackar den (genom att till exempel utnyttja en svaghet i operativsystemet). I sitt första drag väljer operatören en dator som inte är hackad och skyddar den (till exempel genom att installera den senaste säkerhetsuppdateringen). I alla sina andra drag väljer Byteasar antingen att (a) göra ingenting eller (b) välja en dator som varken är hackad eller skyddad och är direkt länkad till en hackad dator, och hacka den. I alla sina andra drag väljer operatören att antingen (a) göra ingenting eller (b) välja en dator som inte är hackad och är direkt länkad till en skyddad dator, och skydda den. Spelet tar slut när det har gått två drag där båda spelarna väljer att göra ingenting. I början av spelet är ingen dator hackad eller skyddad. Varje dator i har ett värde v i som beskriver hur värdefull data som finns på datorn. För varje hackad dator i får Byteasar v i poäng. Byteasar är en ganska duktig hacker, men han kan ingenting om algoritmer. Därför ber han dig skriva ett program som avgör hans maximala poäng, givet att operatören spelar optimalt. Indata Första raden i indata innehåller ett positivt heltal n (n 2), som anger antalet datorer. Andra raden innehåller en sekvens av n positiva heltal v 1, v 2..., v n (1 v i 2 000); talet v i beskriver hur värdefull data som finns i dator i. Utdata Ditt program ska skriva ut en rad med ett heltal: Byteasars maximala poäng mot en operatör som spelar optimalt. Exempel 4 7 6 8 4 5 1 1 1 1 1 13 3 v. 3.2 Hacker 1/2

Förklaring av exempel: I det första exemplet ska Byteasar hacka dator 2 med sitt första drag (och få 6 poäng). Operatörens drag blir då att skydda dator 3. I nästa drag hackar Byteasar dator 1 (och får 7 poäng). Slutligen skyddar operaören dator 4. Poängsättning Deluppgift Begränsningar Poäng 1 n 300 20 2 n 5000 20 3 n 500 000, att hacka dator 1 med sitt första drag är optimalt för Byteasar 20 4 n 500 000 40 v. 3.2 Hacker 2/2

Problem: TUG Dragkamp swedish BOI 2015, dag 2. Tillgängligt minne: 256 MB. 1.05.2015 Dragkamp är en populär sport i Byteland. Reglerna är enkla: två lag drar i ett rep i motsatta riktningar. Bytelands årliga välgörenhetsdragkamp äger rum och många har anmält sig. Som chef för rättvisa och bekämpande av osportslighet är det din uppgift att dela upp deltagarna i två lag så att kampen kan hålla på länge. Då 2n deltagare har anmält sig ska varje lag bestå av n deltagare. Repet har n positioner på vänster sida och n positioner på höger sida. Dragkampseliten i Byteland är kräsen: varje deltagare har precis en position på vänster sida och en position på höger sida som han eller hon tycker om. Dessutom känner du till varje deltagares styrka. Organisatören frågar dig följande: Givet ett heltal k, är det möjligt att skapa två lag, så att varje lag har n deltagare, varje deltagare får en position som han eller hon tycker om (självklart kan inte två eller fler deltagare stå på samma plats), och summan av styrka för respektive lag skiljer sig med som mest k? Indata Första raden innehåller ett positivt heltal n, som anger antalet positioner på varje sida av repet, och ett heltal k 20n, som anger den maximala skillnaden i styrka mellan lagen. Låt oss för enkelhetens skull numrera deltagarna från 1 till 2n. Därefter följer 2n rader där varje rad beskriver en deltagare: rad i innehåller 3 positiva heltal l i, r i och s i (1 l i, r i n, 1 s i 20), som anger att deltagare i har styrka s i och vill stå på antingen position l i på vänster sida av repet eller position r i på höger sida av repet. Utdata Ditt program ska skriva ut en rad med antingen eller NO, beroende på om det är möjligt att skapa två lag som uppfyller de givna kraven eller inte. Exempel 4 1 1 1 1 2 1 2 2 2 8 1 2 2 3 3 5 3 3 2 4 4 1 4 4 2 v. 3 Dragkamp 1/2

2 5 1 1 1 1 2 4 2 2 1 2 1 4 NO Förklaring av exempel: I det första exemplet kan vi låta deltagare 1, 3, 6 och 7 vara på vänster sida (vilket ger ett lag med styrka 1 + 8 + 2 + 1 = 12) och deltagare 2, 4, 5 och 8 på höger sida (vilket ger ett lag med styrka 2 + 2 + 5 + 2 = 11). Skillnaden mellan lagens styrkor är 1. I det andra exemplet måste båda deltagarna med styrka 4 vara i samma lag, alltså är den minimala skillnaden i styrka mellan lagen 6. Poängsättning Deluppgift Begränsningar Poäng 1 n 10 18 2 n 2000 30 3 n 30 000, s i = 1 23 4 n 30 000 29 v. 3 Dragkamp 2/2