Afişează mesaje
|
Pagini: [1] 2
|
5
|
Comunitate - feedback, proiecte si distractie / Blog / Răspuns: 4 carti
|
: Iunie 17, 2012, 22:05:48
|
Pai el are 5 carti din care o alege convenabil cea care poate fi ghicita prin conventia celor doi jucatori...si le pune pe celelalte 4 in asa fel incat al doilea jucator sa-si poata da seama prin conventia aia....cam asta inteleg eu din enunt Da, calculul tau e corect, cam asa m-am gandit si eu, doar ca eu am zis ca el ar putea alege si cartea pe care o va lasa...adica si asta ajuta...in fine, noi trebuie sa gasim acest cod al lor(sau unul dintre ele...poate or fi mai multe)
|
|
|
6
|
Comunitate - feedback, proiecte si distractie / Blog / Răspuns: 4 carti
|
: Iunie 17, 2012, 22:00:33
|
Putem stabili o ordine a culorile astfel incat intre oricare 2 carti sa poata fi stabilita o ordine (de exemplu trefla<romb<inima<frunza). Astfel avand 4 carti a,b,c,d putem presupune a<b<c<d. Atunci pentru culoarea celei de-a 5 carti putem avea 4 configuratii: a,b,c,d - trefla (toate in ordine crescatoare) d,c,b,a - romb (toate in ordine descrescatoare) a,d,b,c - inima (cate 2 in ordine crescatoare) d,a,b,c - frunza (cate 2 in ordine descrescatoare) Momentan nu imi dau seama de cum as putea comunica numarul cartii dar voi revenii daca imi vine ceva idee. Si daca sunt toate cartile de aceeasi culoare? Pai cartile sunt numerotate. Eu ma gandesc ca nu e tocmai bine asa, prin ordinea culorilor se poate spune culoarea si prin ordinea numerelor numarul... Spre exemplu, daca toate cartile sunt de aceeasi culoare, atunci cel de-al doilea jucator va sti automat(se face conventia asta). Dar depinde si de celelalte cazuri...cand sunt 2 de aceeasi culoare si celelalte 3 de o alta culoare, sau cand sunt 2-2-1 pe culori, etc....
|
|
|
7
|
Comunitate - feedback, proiecte si distractie / Blog / Răspuns: 4 carti
|
: Iunie 17, 2012, 21:53:46
|
Putem stabili o ordine a culorile astfel incat intre oricare 2 carti sa poata fi stabilita o ordine (de exemplu trefla<romb<inima<frunza). Astfel avand 4 carti a,b,c,d putem presupune a<b<c<d. Atunci pentru culoarea celei de-a 5 carti putem avea 4 configuratii: a,b,c,d - trefla (toate in ordine crescatoare) d,c,b,a - romb (toate in ordine descrescatoare) a,d,b,c - inima (cate 2 in ordine crescatoare) d,a,b,c - frunza (cate 2 in ordine descrescatoare) Momentan nu imi dau seama de cum as putea comunica numarul cartii dar voi revenii daca imi vine ceva idee. Si daca sunt toate cartile de aceeasi culoare?
|
|
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 480 Ecuatii 2
|
: Iunie 04, 2012, 10:13:39
|
Ma chinui de doua zile sa fac problema asta si tot nu-mi iese... Am luat testele de la OJI si pe toate obtin acelasi rezultat ca in .ok...nu inteleg de ce pe infoarena nu iau niciun punct.... #include<fstream> using namespace std; #include<cstring> #include<cstdio> char c[260]; int i,n,numar,x1,x2,s1,s2,t,semn; int main() { ifstream fcin("ecuatii2.in"); FILE *fcout=fopen("ecuatii2.out","w"); fcin>>t; while(t--) { fcin.get(); fcin.get(c,260,'\n'); n=strlen(c); x1=x2=s1=s2=numar=0; semn=1; for(i=0;c[i]!='=';i++) { if('0'<=c[i] && c[i]<='9') numar=numar*10+c[i]-'0'; else if(c[i]=='x') if(numar==0) x1+=semn; else x1=x1+semn*numar,numar=0; else s1=s1+semn*numar,numar=0; if(c[i]=='-') semn=-1; if(c[i]=='+') semn=1; } s1+=numar*semn; semn=1; numar=0; for(;i<n;i++) { if('0'<=c[i] && c[i]<='9') numar=numar*10+c[i]-'0'; else if(c[i]=='x') if(numar==0) x2+=semn; else x2=x2+semn*numar,numar=0; else s2=s2+semn*numar,numar=0; if(c[i]=='-') semn=-1; if(c[i]=='+') semn=1; } s2+=numar*semn; x1-=x2; s1-=s2; if(x1==0) if(s1==0) fprintf(fcout,"infinit\n"); else fprintf(fcout,"imposibil\n"); else if((double)s1/x1==0) fprintf(fcout,"0.0000\n"); else fprintf(fcout,"%.4lf\n",(double)-s1/x1); } return 0; }
Later edit: problema era ca puteau fi mai multe spatii pe primul rand dupa ce citeam numarul ecuatiilor....am pus inainte de citirea ecuatiilor fcin.get(asa,100000); si fcin.get() si am luat 100
|
|
|
11
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 685 Pluricex
|
: Mai 29, 2012, 08:19:29
|
Da, stiam de problema cu combinarile, dar m-a ajutat ideea ta, am luat 90 in prima faza, apoi 100, schimband din nou citirea si scrierea Multumesc mult!
|
|
|
12
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 685 Pluricex
|
: Mai 28, 2012, 16:28:10
|
Am facut un back recursiv cu care am luat initial 70, apoi l-am optimizat pana la 80 si nu stiu ce sa-i mai fac.Am luat sursa oficiala si am trimis-o, dar a luat doar 70.Cred ca ar trebui scazuta limita de timp, dar am vazut ca unii au reusit sa ia suta.Imi puteti spune si mie ce optimizari sa mai fac?(am incercat si sa schimb cititrea, dar degeaba...tot 80): #include<fstream> using namespace std; #include<stdio.h> FILE *fcin=fopen("pluricex.in","r"); FILE *fcout=fopen("pluricex.out","w"); int n,s[23],k,u=1,d,m[23][11]; void read() { fscanf(fcin,"%d %d %d",&n,&k,&d); int x,y; for(int i=1;i<=n;i++) { fscanf(fcin,"\n%d ",&x); for(int j=1;j<=x;j++) { fscanf(fcin,"%d ",&y); m[i][y]=1; } } } bool bun() { int j; for(int i=1;i<=d;i++) { for(j=1;j<=k;j++) if(m[s[j]][i]) break; if(j==k+1) return 0; } return 1; } void print() { for(int i=1;i<=k;i++) fprintf(fcout,"%d ",s[i]); fprintf(fcout,"\n"); } bool cont(int x) { for(int i=1;i<x;i++) if(s[i]==s[x]) return 0; return 1; } void back(int x) { if(x==k+1){ if(bun()) print();} else for(int i=u;i<=n;i++) { s[x]=i; u=i; if(cont(x)) back(x+1); } } int main() { read(); back(1); return 0; }
|
|
|
14
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1005 Telefon
|
: Mai 26, 2012, 18:42:04
|
Mi s-a intamplat ceva "straniu" la problema asta: int n,i; char v[10]; fcin.get(v,10); n=strlen(v); ...cu asta iau 90,dar daca pun 11 in loc de 10, iau 100 si la testul asta 8543013213 S 1 DR 1 A S 1 A ST 1 A S 1 DR 2 A J 3 ST 1 A S 3 ST 1 A DR 2 A ST 1 A ST 1 A DR 2 A J 3 mie imi afisa S 1 DR 1 A S 1 A ST 1 A S 1 DR 2 A J 3 ST 1 A S 3 ST 1 A DR 2 A ST 1 A ST 1 A J 3 DR 2 din cauza ca nu imi citea ultimul 3....care ar putea fi explicatia?
|
|
|
16
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale
|
: Mai 21, 2012, 19:16:41
|
Eu pic vreo 4 teste din cauza ca e gresit, dar eu am verificat si programul imi calculeaza corect sumele.Ma puteti ajuta? #include<fstream> using namespace std; #include<values.h> long long a[1001][1001]; int main() { ifstream fcin("diagonale.in"); ofstream fcout("diagonale.out"); int i,j,n; long long s,max=-LONG_LONG_MAX; fcin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) fcin>>a[i][j]; //diagonala principala s=0; for(i=1;i<=n;i++) s+=a[i][i]; if(s>max) max=s; //parelelele de deasupra diagonalei principale for(i=2;i<=n;i++) { s=0; for(j=i;j<=n;j++) s+=a[j-i+1][j]; if(s>max) max=s; } //parelelele de dedesubtul diagonalei principale for(i=2;i<=n;i++) { s=0; for(j=2;j<=n;j++) s+=a[j][j-i+1]; if(s>max) max=s; } //diagonala secundara s=0; for(i=1;i<=n;i++) s+=a[i][n-i+1]; if(s>max) max=s; //parelelele de deasupra diagonalei secundare for(i=1;i<n;i++) { s=0; for(j=1;j<=i;j++) s+=a[j][i-j+1]; if(s>max) max=s; } //paralelele de deasubtul diagonalei secundare for(i=2;i<=n;i++) { s=0; for(j=i;j<=n;j++) s+=a[j][n-j+i]; if(s>max) max=s; } fcout<<max; return 0; }
|
|
|
20
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1096 Qtri
|
: Aprilie 20, 2012, 07:05:08
|
Am incercat sa rezolv problema prin metoda ariilor, dar nu iau decat 60 de puncte(WA pe 7 si 8, respectiv TLE pe 9,10).Rezultatul l-am verificat asa: fie a1 aria triunghiului ABC si a2,a3,a4 ariile triunghiurilor ABD, ACD, respectiv BCD.Conditia era (a2+a3+a4-0.03<=a1 && a1<=a2+a3+a4+0.03).De ce iau WA pe 7 si 8? Si exista vreo metoda mai rapida de a afla daca un punct se afla in interiorul unui triunghi decat metoda ariilor(presupun ca de asta iau TLE pe ultimele doua teste)?
|
|
|
22
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 684 Concurs2
|
: Aprilie 17, 2012, 19:15:57
|
Am descarcat testele de la OJI si programul meu afiseaza corect lista elevilor, dar aici fac doar 30 de puncte.Am memorat elevii intr-o matrice m.Partea de program care afiseaza lista este: while(p>0) { max1=max2=-1; for(i=1;i<=maxj;i++) if(m[i][0]>max1) { max2=max1; poz2=poz1; max1=m[i][0]; poz1=i; } else if(m[i][0]>max2) { max2=m[i][0]; poz2=i; } if(max1==max2) { fcout<<poz1<<" "<<m[poz1][m[poz1][0]]<<"\n"; m[poz1][0]--; p-=2; fcout<<poz2<<" "<<m[poz2][m[poz2][0]]<<"\n"; m[poz2][0]--; } else while(m[poz2][0] || p==1) { fcout<<poz1<<" "<<m[poz1][m[poz1][0]]<<"\n"; m[poz1][0]--; p--; if(m[poz2][0]>0) { fcout<<poz2<<" "<<m[poz2][m[poz2][0]]<<"\n"; m[poz2][0]--; p--; } } }
|
|
|
|