infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Paul-Dan Baltescu din Iulie 31, 2009, 20:33:33



Titlul: 887 Rec
Scris de: Paul-Dan Baltescu din Iulie 31, 2009, 20:33:33
Aici puteti discuta despre problema Rec (http://infoarena.ro/problema/rec).

Problema a fost adaugata de Vlad Gavrila. Mai multe detalii la Extinde arhiva (http://infoarena.ro/implica-te/extinde-arhiva).


Titlul: Răspuns: 887 Rec
Scris de: Maria Liviu Valentin din Ianuarie 08, 2011, 12:25:41
Observ ca nu se face cu bkt... ideei? :-'


Titlul: Răspuns: 887 Rec
Scris de: Eugenie Daniel Posdarascu din Ianuarie 08, 2011, 16:49:41
De obicei la problemele care iti cer numarul total de solutii te gandesti in primul rand la programare dinamica. Tine minte, sigur o sa mai dai peste astfel de probleme :thumbup: .


Titlul: Răspuns: 887 Rec
Scris de: Dan H Alexandru din Martie 01, 2012, 10:10:50
Ma puteti ajuta si pe mine cu o idee sau macar un pont, va rog ?  :-k Cea mai buna solutie pe care am gasit-o are complexitate mult prea mare. ??? Un O(N*S) mi se pare ca ar fi solutia mea ...  

Ma folosesc de faptul ca S=x[1]+x[2]+...+x[n] , unde x[1]>=x[2]>=..>=x[n] , deci putem recrie ecuatia asa:
S=(y[1]-F+1)+(y[2]-F+1)+(y[3]-F+1)+ ... + (y[n]-F+1) + (F-1)*N , deci S-(F-1)*N=y[1]+y[2]+...+y[n].
Astfel am simplificat problema din a face suma S de N nr. descresctoare >=K in suma S de N nr. descrescatoare >=1.

Apoi fac o matrice A[][] care se construieste in felul urmator: A[j][k]=A[j-1][k/2]+ A[j-1][k/2+1]... + A[j-1][k/2+N-1] .
Solutia va fi A[ S ][ N ].

Ce e pana aici e O(N*S^2) si pentru a optimiza am facut sume partiale. Se poate optimiza si mai mult sau ideea mea de pornire e gresita ?


Titlul: Răspuns: 887 Rec
Scris de: Andrei Stanciu din Martie 25, 2013, 21:57:54
Am facut solutia de 80p cu memoizare. Ma poate ajuta cineva sa ajung la 100, sau trebuie schimbata metoda complet?