infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Grigorean din Octombrie 17, 2011, 16:02:12



Titlul: 1218 Edist
Scris de: Andrei Grigorean din Octombrie 17, 2011, 16:02:12
Aici puteţi discuta despre problema Edist (http://infoarena.ro/problema/edist).


Titlul: Răspuns: 1218 Edist
Scris de: Mihai Visuian din Noiembrie 10, 2011, 15:40:17
Se poate optimiza programul cumva in functie de k? ??? Iau tle pe ultimele 3 teste...


Titlul: Răspuns: 1218 Edist
Scris de: Simoiu Robert din Noiembrie 10, 2011, 15:51:00
Da citeste solutiile oficiale (http://infoarena.ro/girls-programming-camp-2011/selectie/solutii).


Titlul: Răspuns: 1218 Edist
Scris de: Mihai Visuian din Noiembrie 11, 2011, 22:37:16
Cum sa fie coloane intre intervalul i-k si i+k daca i merge pana la n???
si nu trebuie |i-k| ?


Titlul: Răspuns: 1218 Edist
Scris de: Simoiu Robert din Noiembrie 12, 2011, 09:44:36
Fii atent, al doilea for tu il ai de la 1 -> N, si cum iti spune ca rezultatul e maxim K, de aici rezulta ca pentru orice linie i, nu trebuie sa parcurgi coloanele de la 1 -> N, ci doar de la i - K pana la i + K, ceea ce este in afara acestor coloane (adica coloanele din intervalul [1, i - K) si (i + K, N] au valoarea > K). Deci trebuie doar sa modifici dinamica, si ... cam asta e.


Titlul: Răspuns: 1218 Edist
Scris de: Ilies Norbert din Februarie 29, 2012, 09:16:33
iau 90 cu WA la testul 7 :-? ce e asa special la el ?


Titlul: Răspuns: 1218 Edist
Scris de: Stoianovici Horatiu Andrei din Aprilie 06, 2012, 23:19:22
Primesc SIGABRT daca trimit o sursa care are modificat doar un for:
In loc de
Cod:
for(int j=i-k;...)
In cea cu SIGABRT este
Cod:
for(int j=(i-k>1?i-k:1);...)
In rest este identica cu alta care ia 80 de puncte. De ce ? Acelasi lucru se intampla si daca fac o functie de maxim si scriu
Cod:
for(int j=maxim(i-k,1);...)
sau daca scriu
Cod:
int j=i-k;
if(j<1)
  j=1;
for(;...)
cod complet al for-ului:
Cod:
for(int i=1;i<=n+1;i++)
{
for(int j=i-k;j<=minn(i+k,m+1);j++)
{
if(s1[i-1]==s2[j-1])
d[1][j]=d[0][j-1];
else
d[1][j]=minim(d[0][j],d[0][j-1],d[1][j-1])+1;
}
regulate(i);
}