Afişează mesaje
|
Pagini: [1] 2
|
10
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: dinamica
|
: Martie 14, 2011, 18:12:04
|
maxim = 0;//suma maxima pe care am format-o format[0]=1; for(i=1;i<=N;i++) { in>>nr; for(j=maxim;j>=0;j--) if(format[j]) //daca am format deja suma j format[nr+j]=1; //marchez suma j+nr ca fiind formata if(maxim<=S)maxim+=nr; //actualizez suma maxima.daca este mai mare decat S nu are rost sa o mai actualizez } Pentru fiecare suma deja formata aduni valoarea citita formand astfel noi sume.
|
|
|
14
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 067 Triang
|
: Februarie 14, 2011, 18:01:46
|
Am incercat sa o rezolv folosind o tabela de dispersie insa primeam Signal11 ,dupa ceva modificari am ajuns sa primesc WA. Am modificat sursa pana am ajuns la rezolvarea in O(N^3) dar si asa primesc WA la teste.Nu stiu daca e gresita formula sau e o problema de precizie(desi nu cred ). Formula pt a determina coordonatele celui de-al 3-lea puct este : x = (-x1+y1*s3+x2+y2*s3)/2; y = (-y1-x1*s3-x2*s3+y2)/2; //cu s3 am notat radical din 3. ?(am folosit numere complexe)
|
|
|
18
|
infoarena - concursuri, probleme, evaluator, articole / .CAMPION / Desen
|
: Decembrie 14, 2010, 20:10:37
|
Am incercat sa fac problema Desen insa iau 0 puncte si nu inteleg ce e gresit la rationament : 1. ca sa adaug un nod la arborele deja format caut muchia de cost minim. 2. dupa ce am legat nodul,caut alte puncte al caror cost ar putea fi micsorat. #include <fstream> #include <iomanip> #include <cmath> #define nmax 1002
using namespace std;
ifstream in("desen.in"); ofstream out("desen.out");
double X[nmax],Y[nmax]; int N,i,j; double D[nmax];//muchia minima cu care am legat un nod de arbore double C[nmax][nmax];//costul intre oricare 2 noduri
int main() { in>>N; double S = 0,s; for(i=1;i<=N;i++)in>>X[i]>>Y[i]; for(i=1;i<N;i++)for(j=i+1;j<=N;j++)C[i][j]=C[j][i] = sqrt((X[i]-X[j])*(X[i]-X[j])+(Y[i]-Y[j])*(Y[i]-Y[j]));//calculez distanta intre oricare 2 puncte out<<setprecision(6);out<<fixed; out<<S<<'\n'; for(i=2;i<=N;i++) { D[i] = 9999999; for(j=1;j<i;j++) if(C[i][j]<D[i])D[i]=C[i][j]; S+=D[i];//actualizez costul for(j=1;j<i;j++) if(D[j]>C[i][j])S-=D[j],S+=D[i];//elimin muchia anterioara si o adaug pe cea noua out<<S<<'\n'; } return 0; }
|
|
|
21
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: O problema
|
: Septembrie 08, 2010, 12:35:18
|
Ar veni 20*30*50 apoi 21*30*50,20*31*50 , 22*30*50 , 20*30*51 , 21*31*50. Daca ar fi cum spuneti voi sarcina ar trebui sa fie 2x*3x*5x,x=0,1,2.
|
|
|
|