Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:这题递推运算量好像很可能上亿啊!递归内存不允许啊!!!咋办!!!In Reply To:这题递推运算量好像很可能上亿啊!递归内存不允许啊!!!咋办!!! Posted by:wp_1wp_1 at 2007-10-02 11:33:35 #include<iostream.h> #include<fstream.h> #include<stdlib.h> #include<algorithm> ifstream in("in.txt"); //#define cin in struct datatype{ int total; int a[20]; }; datatype a[1000],b[1000]; datatype *p,*q; struct datasave{ int minus; int total; }; datasave data[200]; int n,m; void clear(datatype *p){ int i; for(i=0;i<=40*m;i++) p[i].total=0; } void input(){ cin>>n>>m; if(n==0&&m==0)exit(0); int i; for(i=0;i<n;i++){ int a,b; cin>>a>>b; data[i].minus=a-b+20; data[i].total=a+b+20; } clear(a); for(i=0;i<n;i++){ int x=data[i].minus; if(a[x].total<data[i].total){ a[x].total=data[i].total; a[x].a[0]=i; } } } int temp[200]; void filltemp(int* a,int k){ int i; for(i=0;i<n;i++) temp[i]=0; for(i=0;i<k;i++) temp[a[i]]=1; } void print(datatype* p,int k){ static time=1; //cout<<n<<endl;/// cout<<"Jury #"<<time++<<endl; int x=p[k].total-20*m; int y=k-20*m; cout<<"Best jury has value "<<(x+y)/2; cout<<" for prosecution and value "<<(x-y)/2; cout<<" for defence:"<<endl; std::sort(p[k].a,p[k].a+m); int i; for(i=0;i<m;i++) cout<<' '<<p[k].a[i]+1; cout<<endl<<endl; } void solve(){ p=a;q=b; int i,j,k; for(i=1;i<m;i++){ clear(q); for(j=0;j<=40*i;j++){ if(p[j].total==0)continue; filltemp(p[j].a,i); for(k=0;k<n;k++){ if(temp[k]==1)continue; int x=data[k].minus; int y=j+x; if(q[y].total<p[j].total+data[k].total){ q[y].total=p[j].total+data[k].total; std::copy(p[j].a,p[j].a+i,q[y].a); q[y].a[i]=k; } } } std::swap(p,q); } for(i=0;;i++){ if(p[20*m+i].total==0){ if(p[20*m-i].total==0)continue; else{ print(p,20*m-i); break; } } else{ if(p[20*m-i].total==0) print(p,20*m+i); else{ if(p[20*m+i].total>p[20*m-i].total) print(p,20*m+i); else print(p,20*m-i); } break; } } } void main(){ while(1){ input(); solve(); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator