Editorial for Krompir
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Analiza
Posmatrajmo slučajeve gde je broj početnih polja () mali, kao što i sugeriše prvi podzadatak. Jasno je da je za rešenje (samo polja u odgovarajućoj vrsti i koloni) bez obzira na to gde se početno polje nalazi. Za lako se uočava da je dovoljno posmatrati samo dva slučaja: ukoliko početna polja nisu u istoj vrsti ni koloni, tada je rešenje jer zauzimamo po dve vrste i kolone, ali, u njihovom preseku se nalaze 4 polja koja brojimo 2 puta pa otud oduzimanje; ukoliko su početna polja su u istoj vrsti ili koloni tada imamo vrstu/kolonu manje pa je rešenje .
Za drugi podzadatak je dovoljno odraditi direktnu simulaciju -- za svako početno polje markirati sva polja neke matrice oblika i i na kraju prebrojati markirana polja u matrici. Vremenska složenost ovog pristupa je a memorijska pa je jasno da će nam za ostale podzadatke trebati bolji algoritam.
Na osnovu prethodne diskusije, prirodno se nameće činjenica da rešenje ne zavisi od tačnih položaja početnih polja već samo od njihovog međusobnog položaja, a prevashodno od toga da li su u istoj vrsti/koloni. Neka je broj vrsta u kojima se nalazi bar jedan krompir a - broj kolona u kojima se nalazi bar jedan krompir. Jasno, na svakom polju ovih vrsta i kolona će izrasti krompir dok će ostala polja ostati prazna. Prema tome, ukupno imamo pokrivenih vrsta/kolona koje međusobno imaju ukupno presečnih polja koja ne smemo da računamo dva puta, pa je ukupan broj polja sa krompirima jednak .
Dakle, dovoljno je odrediti vrednosti i . Broj je jednak broju različitih elemenata u nizu (analogno za i niz ) a ovo je poznat problem koji se može uraditi sortiranjem niza i upoređivanjem uzastopnih elemenata. Složenost ovog pristupa je složenost soritranja niza dužine a za treći podzadatak je dovoljno koristiti i algoritme sortiranja složenosti .
Za kompletno rešenje zadatka nije neophodno sortiranje; dovoljno je primetiti da su vrednosti niza celi brojevi iz segmenta pa možemo koristiti pomoćni logički niz dužine i za svako markirati element . Na kraju, broj markiranih elementa je upravo broj (slično i za drugi pomoćni niz i broj ). Vremenska složenost ovog pristupa je uz memorije, i nosi maksimalan broj poena.
Comments