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 |
用算术,可以一次操作钓很多次鱼In Reply To:怎么会超时了?算法是贪心。谢谢 Posted by:hdm29682 at 2006-03-07 22:35:58 > #include <iostream.h> > #include <string.h> > int f[25],ef[25],d[25],t[25]={0},w[25],ew[25]; > void main(){ > int h,n,i,j,m,mi,p,ep,lt,spsp; > while((cin>>n)&&n){ > cin>>h; > h*=12; > for(i=0;i<n;++i)cin>>ef[i]; > for(i=0;i<n;++i)cin>>d[i]; > for(i=1;i<n;++i){cin>>t[i];t[i]+=t[i-1];} > ep=0;spsp=0; > for(j=0;j<n;++j){ > lt=h-t[j]; > memcpy(f,ef,sizeof(int)*n); > memset(w,0,sizeof(int)*n); > p=0; > while(lt){ > m=mi=-1; > for(i=0;i<=j;++i) > if(f[i]>m){ > m=f[i]; > mi=i; > } > if(mi>-1){ > p+=f[mi]; > f[mi]-=d[mi]; > ++w[mi]; > --lt; > } > else break; > } > if(p>ep){ > ep=p;spsp=t[j]; > memcpy(ew,w,sizeof(int)*n); > } > } > m=spsp; > for(i=1;i<n;++i){ > m+=ew[i]; > } > m=h-m; > cout<<(m>ew[0]?m:ew[0])*5;cout<<", "; > for(i=1;i<n;++i){ > cout<<ew[i]*5; > if(i!=n-1)cout<<", "; > else cout<<" \n"; > } > cout<<"Number of fish expected: "<<ep<<" \n\n"; > } > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator