infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Grigorean din Decembrie 14, 2008, 14:27:56



Titlul: 776 Kprime
Scris de: Andrei Grigorean din Decembrie 14, 2008, 14:27:56
Aici puteti discuta despre problema Kprime (http://infoarena.ro/problema/kprime).


Titlul: Răspuns: 776 Kprime
Scris de: Mandu Dragos din Ianuarie 09, 2009, 22:27:17
pb asta e corecta? deci rasp ar fi 3 (perechile (1,2),(1,3),(2,3)) :D  .....sau  :eyebrow:  explikti mi si mie careva ..... ](*,)


Titlul: Răspuns: 776 Kprime
Scris de: Andrei Misarca din Ianuarie 09, 2009, 22:30:49
1 nu este prim, iar pentru exemplul
Cod:
5 2
1 2 4 3 8
secventele sunt
Cod:
1 2 4 3 8
1 2 4 3
2 4 3 8
2 4 3
Numerele trebuie sa fie pe pozitii consecutive


Titlul: Răspuns: 776 Kprime
Scris de: Mandu Dragos din Ianuarie 09, 2009, 22:32:17
aa srry ....da am crezut ca doar nr prime sa fie srry  ](*,) ms  :ok:


Titlul: Răspuns: 776 Kprime
Scris de: Mandu Dragos din Ianuarie 09, 2009, 23:31:54
mai da ti mi si mie un exemplu am facut pb dar nuj imi da killed by signal..... ](*,)


Titlul: Răspuns: 776 Kprime
Scris de: Codrea Marcel din Ianuarie 09, 2009, 23:53:59
Pentru soluţia problemei Kprime : http://infoarena.ro/algoritmiada-2009/runda-1/solutii#kprime
Pentru mesajele pe care le primeÅŸti de la evaluator : http://infoarena.ro/documentatie/evaluator


Titlul: Răspuns: 776 Kprime
Scris de: Gabriel Bitis din Ianuarie 10, 2009, 00:14:01
mai da ti mi si mie un exemplu am facut pb dar nuj imi da killed by signal..... ](*,)
Poti sa faci tu niste teste si sa le postezi aici, sa vezi care e raspunsul celor care au luat 100.


Titlul: Răspuns: 776 Kprime
Scris de: Andrei Grigorean din Ianuarie 10, 2009, 20:53:12
Primesti "killed by signal 11" din cauza ca declari o matrice de 10.000 * 10.000 de long long.


Titlul: Răspuns: 776 Kprime
Scris de: Iancu David Traian din Mai 15, 2009, 19:03:04
Pentru cei interesaţi, problema aceasta se poate rezolva şi în complexitate O(n), cu ajutorul unui vector de frecvenţă.


Titlul: Răspuns: 776 Kprime
Scris de: Pripoae Teodor Anton din Mai 16, 2009, 05:45:43
Sunt curios cum :). Ai n log n de la ciur oricum.


Titlul: Răspuns: 776 Kprime
Scris de: Andrei Misarca din Mai 16, 2009, 07:39:23
Ciurul se rezolva in O(N log log N) (http://infoarena.ro/blog/intrebare-scurta), si in plus numerele sunt mai mici decat 1000, deci complexitatea finala iese O(N) :)


Titlul: Răspuns: 776 Kprime
Scris de: Alexandru Pana din Mai 24, 2009, 10:57:09
Doar o idee: "Elementele sirului vor cuprinse intre 1 si 1000" se poate folosi un sir de constante pentru ciur.


Titlul: Răspuns: 776 Kprime
Scris de: Paval Cristi Onisim din Iunie 04, 2009, 14:13:45
nu ma dragos uita.te la comentariul care e inaintea ta :)
perechile sunt:
1 2 4 3 8
1 2 4 3
2 4 3 8
2 4 3...
nu conteaza cat de lung este sirul ci conteaza sa aiba 2 nr prime


Titlul: Răspuns: 776 Kprime
Scris de: Antoche Ioana Alexandra din August 25, 2009, 06:55:31
Pt sirul: d=(1 2 4 3 8) am folosit vect v=(0 1 1 2 2), unde v[ i ] reprezinta cate nr prime am pana pe poz i inclusiv si vectorul p=(1 2 2), unde p[ i ] numara cati i am in vectorul v[ i ].
apoi de la 1 la n caut binar x=caut(v[ i ]+m) (daca d[ i ]!=prim) sau x=(v[ i ]+m-1) (daca d[ i ]==prim), iar nr+=p[ v [ x ] ];

pe testele date de mine da bine, dar pe site iau 0pct. Imi poate spune cineva unde gresesc, pls? [ si un contra-exemplu e bun :) ]


Titlul: Răspuns: 776 Kprime
Scris de: Florian Marcu din August 25, 2009, 11:50:24
O solutie simpla este sa retinem intr-un tablou p[] toate pozitile numerelor prime din sirul initial, in ordine crescatoare. Apoi, facem o simpla interatie cu i de la 1 la nr_p (nr_p = numarul elementelor lui p[]) si adaugam la solutie (p[ i ] - p[ i-1 ]) * ( p[j+1] - p[ j ]), unde j = i+K-1, iar p[0] = 0 si p[nr_p+1] = N+1.  :thumbup: 


Titlul: Răspuns: 776 Kprime
Scris de: Cristi din Septembrie 01, 2009, 12:28:20
nu inteleg cum se poate folosi cautarea binara aici....?


Titlul: Răspuns: 776 Kprime
Scris de: Florian Marcu din Septembrie 02, 2009, 16:46:54
Te ajuta http://infoarena.ro/algoritmiada-2009/runda-1/solutii#kprime .


Titlul: Răspuns: 776 Kprime
Scris de: Vlad Schnakovszki din Februarie 22, 2010, 12:27:48
Ce inseamna "Killed by signal 6(SIGABRT)." ? ](*,)
Mentionez ca pe MinGW merge perfect.


Titlul: Răspuns: 776 Kprime
Scris de: UAIC.VlasCatalin din Iulie 22, 2011, 17:11:46
ma ajuta cineva la problema asta, iau WA pe testele grupate si nu inteleg de ce, am facut programul dupa ideea mentionata mai sus de Florian Marcu pentru ca nu ma prea pricep inca la cautare binara, pentru exemplele mele merge bine, dar totusi ""incorect"" ](*,)


Titlul: Răspuns: 776 Kprime
Scris de: UAIC.VlasCatalin din Iulie 22, 2011, 17:31:17
LE: s-a rezolvat doar trebuia sa maresc limitile :yahoo:


Titlul: Răspuns: 776 Kprime
Scris de: avram florin constantin din Martie 28, 2012, 20:04:44
imi poate spune si mie cineva ce e gresit in abordarea aceasta ca nu ma prind...

Cod:
for(  int i = 1 ; i <= N ; ++i )
{
scanf("%d" , &A[i] );
if( A[i] & 1 )
if( !ciur[A[i]] )
S[i] = S[i-1]+1;
else
S[i] = S[i-1];
else
if( A[i] == 2 )
S[i] = S[i-1]+1;
else
S[i] = S[i-1];
}
int j1,j2,i,Sol;
j1 = j2 = 1;
Sol = 0;
for( i = 1 ; i <= N ; ++i )
if( S[i] >= K )
{
while( S[j2] + K <= S[i] )
++j2;
while( S[j1] + K < S[i] )
++j1;
Sol += (j2-j1+1);
}

Editat de moderator: Folositi tag-ul code cand postati cod sursa.


Titlul: Răspuns: 776 Kprime
Scris de: Mihai Calancea din Martie 28, 2012, 20:17:40
Niste sfaturi: Daca te referi la ideea de rezolvare, atunci nu posta cod, ci expune-o in cuvinte. Daca te referi la implementare, sa faci debug pe codul altcuiva este foarte greu si pana la urma mult mai putin folositor decat daca persoana in cauza l-ar face singur.