Professional Documents
Culture Documents
INFORMATIKE 2013/2014
2. KOLO
OPISI ALGORITAMA
HONI 2013/2014 Zadatak PIR
2. kolo, 9. studenog 2013. Autor: Nikola Dmitrović
Kategorija: ad hoc
Dva uzastopna reda sadrže ukupno 9 cigli. Ako je N paran, zid možemo
rastaviti na N / 2 takvih parova uzastopnih redova, pa je rješenje u ovom
slučaju N / 2 * 9.
Kategorija: ad hoc
učitaj (K)
učitaj (N)
igra := 0 // vrijeme trajanja igre, u početku je nula
Kako za neko polje (redak, stupac) na jednostavan način provjeriti svih osam
susjeda? Ti susjedi su sljedeći:
(redak - 1, stupac - 1)
(redak - 1, stupac)
(redak - 1, stupac + 1)
(redak, stupac - 1)
(redak, stupac + 1)
(redak + 1, stupac - 1)
(redak + 1, stupac)
(redak + 1, stupac + 1)
Ako malo razmislite, vidjet ćete da na ovaj način stvarno biramo svih osam
gore navedenih susjeda. Unutar petlje još valja provjeriti spomenute uvjete
za susjeda.
Ukupan broj rukovanja na misi, bez Mirka, jednak je zbroju svih dobivenih
brojeva susjeda za zauzeta polja, podijeljen s dva -- jer smo svako
rukovanje brojali dvaput, za svaku osobu po jednom. Još valja dodati broj
Mirkovih rukovanja, a to je maksimalan broj susjeda nekog praznog polja.
Kategorija: ad hoc
Bilo koji niz gradova koji zadovoljava Mirkov uvjet možemo izgraditi na
sljedeći način. Najprije u niz dodamo grad 1. Potom dodamo grad 2 lijevo ili
desno od grada 1. Potom dodamo grad 3 na lijevi ili desni kraj trenutnog
niza gradova. Potom grad 4, ponovno, na lijevi ili desni kraj. I tako dalje.
Takav niz zadovoljavat će Mirkov uvjet, a i obratno, bilo koji niz koji
zadovoljava Mirkov uvjet može se dobiti na opisani način.
Riješimo prvo slučaj kada su svi brojevi na ulazu različiti. Tada nam se graf
sastoji od disjunktnih ciklusa. Označimo broj načina na koji možemo obojati
ciklus od n vrhova sa f(n). Zamislimo da bojamo sličice redom. Prvu možemo
obojati na k načina. Drugu sličicu možemo obojati na k - 1 način jer mora
biti različito obojana od prve sličice. Za ostale se sličice zaključuje analogno.
No, u tih k(k - 1)n - 1 bojanja ćemo imati neka bojanja u kojima su nam
sličica broj 1 i sličica broj n iste boje. Spajanjem vrhova 1 i n, ako su iste
boje, dobivamo ciklus velčine n - 1 sa različito obojanim vrhovima te
zaključujemo da vrijedi rekurzivna relacija f(n) = k(k - 1)n - 1 - f(n - 1). Stoga
tu funkciju možemo lagano izračunati u linearnoj složenosti.
Ako brojevi nisu nužno različiti, naši će ciklusi imati na sebi repove koji su
stabla. Zamislimo si da smo obojali cikluse te sada bojamo te repove. Vrh
direktno spojen na ciklus možemo obojati na k - 1 načina (mora biti različit
od onoga na koji je spojen), vrh spojen na njega na također k - 1 načina itd.
Stoga zaključujemo da za svaki vrh koji nije u ciklusu naše trenutno rješenje
trebamo pomnožiti sa k - 1.
Kategorija: Grafovi
Nazovimo pravac paralelan s x-osi ili y-osi dobrim ako postoji točka koja leži
na njemu.
Pravce i točke možemo predstaviti kao bipartitan graf. Čvorovi s jedne strane
grafa predstavljaju dobre pravce paralelne s x-osi, a čvorovi s desne strane
grafa predstavljaju dobre pravce paralelni s y-osi. Za svaku točku (x, y) iz
ulaza ćemo postaviti brid između pravca x s lijeve strane i pravca y s desne
strane.
Upravo tako!
Ukoliko postoji savršeno uparivanje (uparivanje u kojem je svaki čvor iz
grafa uparen s točno jednim drugim čvorom s kojim dijeli brid) pobijediti će
Slavko, a inače će pobijediti Mirko.
Zašto?
Pretpostavimo da postoji savršeno uparivanje na grafu. Koji god Mirko
odabrao čvor, on će imati para s druge strane grafa, tako da će Slavko uvijek
moći odigrati njega. Dakle, štogod Mirko odigrao, Slavko mu može uzvratiti.
Zato, Mirko nužno gubi.