Afişează mesaje
|
Pagini: [1]
|
2
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Sudoku
|
: Iulie 17, 2014, 07:44:08
|
bogdanbobob97 ) Deci fii atent, Am facut si eu problema si din cite ai vazut din pm, meu am facut-o un pic diferit,, Adica sper ca ai observat ca nu m-am folosit de vectorul de aparitii.. DECI> Tu ai declarat vectorul de aparitii la nivel global,, daca o faci local, in procedura problema e OK !!!! Pentru ca la fiecare back, valorile din vector sunt modificate si se pierd cele de la back-ul anterior,, Succes,,
|
|
|
4
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 218 ZParcurgere
|
: Iulie 14, 2014, 11:29:38
|
ma ajuta si pe mine cnv ?? am facut un fel de divide et impera.. dar nu trec de 70 pc. tu TLE.. si nu-mi dau seama ce as putea face ? unde pierd puncte, , #include<iostream> #include<fstream> #include<math.h>
using namespace std;
ifstream f("z.in"); ofstream g("z.out");
int x,y,t[10000][10000],i,j,k,n; int q; void parcurg(int i,int j,int x,int y) { if(i==x&&j==y)t[i][j]=++q; else { parcurg(i,j,(x+i-1)/2,(y+j-1)/2); parcurg(i,(y+j-1)/2+1,(x+i-1)/2,y); parcurg((x+i-1)/2+1,j,x,(y+j-1)/2); parcurg((x+i-1)/2+1,(y+j-1)/2+1,x,y); } } int main() { f>>n>>k; q=0; parcurg(1,1,int(pow(2,n)),int(pow(2,n))); while(k>0) { f>>x>>y; g<<t[x][y]<<'\n'; k--; } g.close(); return 0; }
va rog mult cineva > !? !?
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: 1450 Kami
|
: Iulie 09, 2014, 20:08:13
|
Nu știu de ce ? Dar am reușit să o iau 100 ,, fără să aplic soluția autorului !!! Trebuie doar de luat în considerare faptul că dacă faci un brute force,, ai nevoie de long long,, pentru ca să-ți încapă suma elementelor de pe nivelele anterioare... Dar cu asta obții TLE, deoarece long long merge se pare mult mai încet ca int.. Deci dacă folosești int ,, obții sume negative.. iar dacă o sumă e negativă, înseamnă că ea a depășit int și deci e mai mare ca 10^9.. În acest caz răspunsu e 0.. Și iau 100 Presupun că ar trebui să facă cnv, cv, cu micuța eroare .
|
|
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 114 Muzeu
|
: Iunie 21, 2014, 11:19:06
|
Eu n-am folosit, algoritmul lui Lee,, pentru că am considerat că găsesc ceva mai eficient.. Dar m-am împotmolit.. nu reușesc să iau decît 80 de puncte.. îmi spune și mie cineva de ce iau doar atît.. Adică unde pierd în timp,, pentru că eu consider că timpii embilor algoritmi ar trebui să fie egali.. ?? http://www.infoarena.ro/job_detail/1199946Uitați și sursa,, : http://www.infoarena.ro/job_detail/1199946?action=view-sourceVă rog,, ajutor..
|
|
|
10
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 005 Potrivirea sirurilor
|
: Iunie 17, 2014, 19:55:11
|
Bună, m-am apucat și eu să rezolv problema dar nu iau decît 16 p.. Deci, nu sunt sigur dacă am făcut kmp, dar am folosit functia prefix/sufix, la o dinamică pe sirul cautat, si apoi am parcurs odată sirul in care se cauta, deci timpul O(n+m),, presupun,, nu iau TLE,, dar iau incorect. Și nu pricep unde am greșit. pe Teste mici totul e ok. Dar pe testele din atașamente îmi dă greșeli.. și nunțeleg, unde greșesc .... Vă rog ajutațimăă.. Uitați și sursa. http://www.infoarena.ro/job_detail/1198971MULȚUMESC ANTICIPAT..
|
|
|
14
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 002 Jocul Flip
|
: Mai 31, 2014, 12:27:51
|
bună, am citit tot acest topic și m-am apucat să rezolv problema.. n-am luat decît 10/20 puncte,,, m-am săturat să tot caut greșeală și nu înțeleg unde-i în algoritm sau în implementare... Algroritmul.. 1. Fac combinări de n(linii). 2. La fiecare combinare fac flip liniile din combinari si flip doar la coloanele mai mici ca 0. 3. Daca suma obtinuta e mai mare ca precedenta o salvez.. Uita-ti si codul.. care e destul de mare )) Pot sa spun ca intra lejer in timp dar imi da raspuns gresit.. Cod: #include <iostream> #include<fstream> using namespace std; ifstream f; ofstream g; int i,j,n,m,t[20][20],a[20]; long long sss; void suma() { int i,j; for(i=1;i<=n;i++){t [m+1]=0; for(j=1;j<=m;j++)t[m+1]+=t[j];} for(i=1;i<=n;i++){t[n+1]=0; for(j=1;j<=m;j++)t[n+1]+=t[j];} } int sumat() { int qw=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)qw+=t[j]; return qw; } void linie(int mn) { for(int i=1;i<=m;i++)t[mn]*=-1; } void coloana(int mn) { for(int i=1;i<=n;i++)t[mn]*=-1; }
void afis(int k,int t[20][20]) { for(int i=1;i<=k;i++)linie(a); suma(); for(int i=1;i<=m;i++)if(t[n+1]<0){coloana(i);} int zxc; zxc=sumat(); if(zxc>sss)sss=zxc; } void back(int k) { if(k<=n){ afis(k,t); for(int i=a[k];i<=n;i++) { int ok=1; int j=1; while(j<=k&&ok){if(i==a[j])ok=0;j++;} if(ok){ a[k+1]=i; back(k+1); } } }} long long k; int main() { f.open("flip.in"); g.open("flip.out"); f>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++)f>>t[j]; sss=sumat(); a[0]=1; back(0); g<<sss; g.close(); }
Va rog mult,,
|
|
|
15
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 003 Fractii
|
: Mai 30, 2014, 16:39:51
|
ma ajută și pe mine cineva de ce nu intru în timp Cod: #include <iostream> #include<fstream> using namespace std; ifstream f; ofstream g; long int i,j,n; long long t[1000002],k; int main() { f.open("fractii.in"); g.open("fractii.out"); f>>n; k=0; for(i=2;i<=n;i++) { t +=i-1; for(j=i+i;j<=n;j+=i)t[j]-=t; k+=t; } g<<k*2+1; g.close(); }
... GAtA!!!! am rezolvat problema ))) habar n-aveam ca tipul long long merge mai greu decit int..
|
|
|
|