Professional Documents
Culture Documents
Rjesenja
Rjesenja
Rjesenja
INFORMATIKE 2012/2013
6. KOLO
OPISI ALGORITAMA
HONI 2012/2013 Zadatak VRT
6. kolo, 9. ožujka 2013. Autor: Adrian Satja Kurdija
Kategorija: ad hoc
HONI 2012/2013 Zadatak POVIJEST
6. kolo, 9. ožujka 2013. Autor: Nikola Dmitrović
Kategorija: ad hoc
HONI 2012/2013 Zadatak BAKA
6. kolo, 9. ožujka 2013. Autor: Adrian Satja Kurdija
Načinimo pomoćni string u kojem se nalaze početna slova svih tipki (A, D,
G, J, M, P, T, W). Za promatrano bakino slovo proći ćemo po pomoćnom
stringu i u njemu naći posljednje slovo koje je od promatranoga manje ili
jednako (to će npr. biti slovo M ako je promatrano slovo O, ili slovo T ako
je promatrano slovo T). Time smo zapravo zamijenili promatrano slovo
početnim slovom koje pripada istoj znamenki. Sada traženu znamenku Z
određujemo iz pozicije pronađenog slova u pomoćnom stringu te konačno
rješenje uvećavamo za Z + 1.
Kategorija: ad hoc
HONI 2012/2013 Zadatak SUME
6. kolo, 9. ožujka 2013. Autor: Adrian Satja Kurdija
a + b = s1,
b + c = s2,
c + a = s3.
Znajući prvi element niza, lako nalazimo i ostale: i-ti element jednak je
sumi prvog te i-tog elementa (koju čitamo iz dane tablice) umanjenoj za
prvi element.
Kategorija: matematika
HONI 2012/2013 Zadatak DOBRI
6. kolo, 9. ožujka 2013. Autor: Ivan Mandura
Naivno rješenje koje za svaku poziciju i iskuša sve moguće trojke presporo je. To je rješenje
složenosti O(N4) i nosi 40% bodova.
Budući da su brojevi u nizu maleni, možemo održavati niz P koji će nam reći postoji li neki broj u
nizu do pozicije i, odnosno P[x] = 1 ako broj x postoji u nizu A do pozicije i, inače P[x] = 0.
Pomoću njega možemo ubrzati naše početno rješenje. Umjesto da iskušamo svaku moguću
trojku, iskušamo svaki mogući par pozicija (j, k) manjih od i i pitamo se, postoji li broj A[i] A[j]
A[k] u nizu do pozicije i. Taj podatak spremljen je u nizu P na poziciji A[i] A[j] A[k]. Nakon
obrade pozicije i, P[A[i]] postavimo na 1. Ovom optimizacijom ostvarujemo rješenje vremenske
složenosti O(N3) koje nosi 70% bodova.
Za 100% bodova treba nam algoritam vremenske složenosti O(N2). Umjesto da se za svaki par
brojeva (j, k) pitamo postoji li broj A[i] A[j] A[k] u nizu do pozicije i, možemo se za svaku
poziciju j pitati postoji li par brojeva brojeva do pozicije i takvih da je njihova suma jednaka A[i]
A[j]. Ponovno za odgovor na to pitanje možemo koristiti niz P, jer suma dva mala broja je
ponovno malen broj. Nakon obrade pozicije i, za sve parove (i, j) postavimo P[A[i] + A[j]] na 1.
Ovom optimizacijom dobivamo traženu složenost za sve bodove.
Primijetimo da je prostorna složenost algoritma O(max Ai), no da su u zadatku bili zadani veliki
brojevi, mogli bismo koristiti balansirano stablo umjesto niza P. U jeziku C++ ponuđene su nam
strukture set i map. Time bismo dobili rješenje prostorne složenosti O(N) i vremenske O(N2 log
N); takvo rješenje u ovom zadatku nosilo je 70% bodova.
Kategorija: ad hoc
HONI 2012/2013 Zadatak BUREK
6. kolo, 9. ožujka 2013. Autor: Adrian Satja Kurdija
N - broj_bureka_lijevo_od(c) - broj_bureka_desno_od(c).
broj_bureka_lijevo_od(x) = broj_bureka_lijevo_od(x - 1) +
broj_bureka_kojima_je_najdesnija_točka_jednaka(x)
Kategorija: sweep
HONI 2012/2013 Zadatak JEDAN
6. kolo, 9. ožujka 2013. Autor: Anton Grbin
Dokaz
Vidljivo je da potez u zadatku ne narušava ova tri uvjeta. Prvi zbog toga što nikada
ne izdižemo prvi ili zadnji interval, drugi zbog toga što izdizanje radimo za jedan i
to na onom intervalu u kojem su sve visine jednake i ne diramo rub intervala. Treći
jer reljef samo povećavamo.
Zbog toga što inicijalna situacija zadovoljava uvjete i što ih potez ne narušava,
dokazali smo jednu stranu dokaza.
U obratu treba dokazati da je svaki valjani histogram moguće dobiti nekom serijom
poteza.
U valjanom histogramu odaberimo sve stupiće visine 0. Takvih ima najmanje dva, a
to su prvi i zadnji. Između svake dvije ne-susjedne nule "odigramo potez" tako da
sve stupiće između tih nula smanjimo za jedan. Budući da vrijedi uvjet da je razlika
visina svaka susjedna dva stupića najviše jedan, u histogram smo dodali barem
dvostruko novih nula od poteza koje smo napravili. Postupak ponavljamo dok svi
stupići u histogramu ne poprime visinu 0. Poteze koje smo napravili su potezi s
kojima se konstruira početni histogram. Time je tvrdnja dokazana.
Rješenje
Rješenje je moguće konstruirati u kvadratnoj složenosti pamteći u stanju broj
načina na koji je moguće složiti prvih K stupića tako da zadnji stupić ima visinu H.
Budući da visina zadnjeg stupića ovisi isključivo o predzadnjem, relacija je
konstantne složenosti. Rješenje je memorijski najefikasnije implementirati
iterativno, pamteći samo O(n) stanja prethodnih iteracija.
t = Ti,X,Y,C + ki * Li, ki ≥ 0
Kategorija: matematika