Nu aveti permisiuni pentru a descarca fisierul grader_test9.ok
Diferente pentru preoni-2007/runda-2/solutii intre reviziile #8 si #9
Nu exista diferente intre titluri.
Diferente intre continut:
h3. (problema grea, clasa a 9-a)
Pentrulinial1 si sumelecorespunzatoarele zonelor 1,2si4osolutiepotentiala( adicauncvadruplu deformal1,l2,c1,c2) esteunic determinata deoarece elementelematricii initiale suntpozitive.Astfel,vomdetermina intai coloanac1pentrucasumadinregiunea1safieS1. Pentru c1stabilit vom afla c2astfelincat sumadinregiunea2sa fieS2.Pentrua determina
Se observa ca daca stim linia {$L{~1~}$} si suma asociata zonei {$1$}, coloana {$C{~1~}$} este unic determinata deoarece elementele matricii initiale erau pozitive: pornind cu submatricea de colturi {$(1, 1)$} si {$(L, 1)$}, va trebui sa crestem $C{~1~}$ pana cand suma submatricii de colturi {$(1, 1)$} si {$(L{~1~}, C{~1~})$} va deveni cat am stabilit initial. Cum suma submatricii de colturi {$(1, 1)$} si {$(L{~1~}, X)$} este mai mica decat suma submatricii de colturi {$(1, 1)$} si {$(L{~1~}, X+1)$}, cautarea coloanei {$C{~1~}$} poate fi realizata prin cautare binara. Dupa ce am determinat {$C{~1~}$}, stabilim care dintre cele 8 sume ramase este valoarea zonei {$2$} si determinam in mod similar valoarea coloanei {$C{~2~}$}. Apoi stabilim care dintre cele 7 sume ramase este valoarea pe care o vom asocia zonei {$4$} si determinam si {$L{~2~}$}. Pentru un cvadruplu astfel determinat, {$L{~1~}$}, {$C{~1~}$}, {$L{~2~}$} si {$C{~2~}$}, vom determina toate cele 9 sume care se formeaza si daca ele sunt egale cu sumele impuse initial, atunci inseamna ca avem o solutie. Dintre toate solutiile posibile o vom afisa in final pe cea care respecta conditiile de minimalitate enuntate.
Pentru a afla suma unei submatrici in O(1) se foloseste o matrice auxiliara de sume partiale: M[i][j] = suma elementelor din submatricea care are coltul stanga-sus in (1, 1) si coltul dreapta-jos in (i, j).
In momentul in care cautam binar o linie sau o coloana va trebui sa aflam suma pentru o anumita submatrice. Pentru a realiza acest lucru eficient, vom construi de la inceput matricea de sume partiale {$S$}, unde {$S{~i,j~}$} reprezinta suma elementelor din submatricea care are coltul stanga-sus in {$(1, 1)$} si coltul dreapta-jos in {$(i, j)$}. Astfel, suma submatricii de colturi {$(x{~1~}, y{~1~})-(x{~2~}, y{~2~})$} va fi egala cu {$S{~x2,y2~}$} - {$S{~x1-1,y2~}$} - {$S{~x2,y1-1~}$} + {$S{~x1-1,y1-1~}$}. Problema este astfel rezolvata in intregime. Complexitatea algoritmului este {$O(N^2^)$}.
h2. Plantatie