Afişează mesaje
|
Pagini: 1 ... 3 4 [5] 6 7
|
103
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1095 Knumere
|
: Septembrie 01, 2013, 00:17:41
|
Salut! In caz ca te mai intereseaza gresesti cand scoti un element din deque( cand nu mai poate face parte din secventa ). Secventa fiind de lungime L-1 nu trebuie scos atunci cand if( i - dq.front() >= l ) dq.pop_front();
ci atunci cand if( i - dq.front() >= l - 1 ) dq.pop_front();
. Cu aceasta modificare sursa de ia 100p. Bafta! PS: Dupa parerea mea ar trebui sa modifici si in while deoarece nu are rost sa tin un element in deque daca cel pe care urmeaza sa il inserez este egal cu el. Ma refer la care ar trebui sa fie
|
|
|
104
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 957 Jap2
|
: August 31, 2013, 16:06:05
|
Salut! Am incercat o rezolvare cu teorema lui Lucas astfel: am descompus A, B in baza P si am facut produs de combinari ca in teorema. Avand precalculate factorialele si inversele modulara pana la P in O(P log P) am raspuns pe query in O(1) + descompunerea. Se poate lua 100p cu o rezolvare ca aceasta deoarece eu iau pe testele 14-20 TLE ?
|
|
|
105
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 043 Boom
|
: August 31, 2013, 11:25:49
|
Am si eu o nelamurire despre cum se formeaza graful. Eu am incercat sa parcurg toate nodurile de la 0->2 n-1 si pentru fiecare nod aflu vecini are cam asa: for ( int i = 0; i < ( 1 << N ); ++i ) { for ( int j = 1; j <= M; ++j ) { int nod = i | sarje[j].nr;
node x = { nod, sarje[j].P }; G[i].push_back( x ); } } Problema este ca atunci cand fac Dijkstra de la 0 la 2 n-1, pe exemplu imi da 3(de la nodul 0 folosind sarja 1 merge in 5 si din 5 folosind sarja 2 merge in 7). Am gresit modul de constructie al grafului sau imi scapa altceva...?
|
|
|
107
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 213 Jocul
|
: August 29, 2013, 12:48:19
|
La dinamica ta nu stiu ce mai poti optimiza dar poti lua 100 cu o alta abordare de dinamica. Tii un vector format[ i ] = 1 daca poti forma suma i si 0 altfel. Si faci ceva de genul: format[0] = true;
for ( int i = 1; i <= n; ++i ) { for ( int j = suma_elemente/2; j >= 0; j-- ) if ( format[j] ) { format[j + v[i]] = 1; } }
Daca tot nu iti iese scrie-mi in privat si mai iti explic...
|
|
|
118
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Sondaj...sau cam aşa ceva
|
: August 06, 2013, 20:09:52
|
In privinta vitezei nu o sa ma cert cu tine pentru ca nu cunosc atat de bine subiectul dar nu inteleg cum un limbaj poate fi mai plictisitor ca altul sau mai performant in functie de numarul de linii de cod. Si ca sa raspund totusi la subiect...nu o sa stea nimeni sa faca subiectele ( mai ales limitele ) pentru 5 limbaje diferite la olimpiada si nu o sa caute nimeni sa vada ce functii sunt implementate in ce limbaje ( de exemplu sortari sau diferite structuri de date ).
PS1: Nu este o lauda sa te angajezi la Microsoft si sa nu fi auzit de C/C++. PS2: Tu inveti Java pentru tine sau ca sa o folosesti la olimpiada?
|
|
|
119
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Siruri de caractere-Backtracking
|
: Iulie 19, 2013, 18:21:17
|
Problema nu se rezolva cu permutari ci cu produs cartezian. Tu ai 3 multimi: S-multimea subiectelor, P-multimea predicatelor si C-multimea complementelor. Tu trebuie sa generezi toate triplele de forma (a,b,c) cu a apartine S, b apartine P si c apartine C. Acum, cum faci back-ul? Ceva de genu: back(nivel) { if(nivel==4) //am pus si subiect si predicat si complement afisare(); else { for ( int i = 1; i <= M[ nivel ][ 0 ]; i++ ) //M[nivel][0] = cardinalul multimii M[nivel], multime in care stochezi cele 3 multimi S,P,C; ai un masiv 3-dimensional unde stochezi sirurile { st[ nivel ] = M[ nivel ][ i ]; back(nivel+1); } } }
Daca nu iti iese sau ai nevoie de ajutor la ceva...sa-mi spui. Bafta!
|
|
|
120
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 514 Capitala
|
: Iulie 01, 2013, 16:30:13
|
Am si eu o intrebare: am calculat cei doi vectori nr[ i ] = numarul de noduri din subarborele nodului i si sum[ i ] = distanta pana la toate nodurile din subarborele nodului i dar nu imi pot da seama cum pot afla suma distantelor de la un nod de la cele care nu sunt in subarborele sat. Imi poate explica cineva va rog frumos cum s-ar calcula ?
|
|
|
123
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Sir de caractere
|
: Iunie 26, 2013, 22:14:57
|
Te complici aiurea cu toate functiile alea...din punctul mea de vedere iti trebuie doar o functie care sterge caracterul de la pozitia i: strcpy(s+i,s+i+1); Avand functia asta trebuie doar sa faci 2 parcurgeri de la inceputul sirului si de la sfarsitul sau si cand gasesti o consoana o stergi si iesi. Ti-am atasat programul care face asta dar incearca mai intai sa-l scrii singur si daca nu iti iese uita-te pe rezolvarea mea. Succes!
PS: nu abuza de pointeri decat daca nu ai cum scapa
|
|
|
Pagini: 1 ... 3 4 [5] 6 7
|
|