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 |
哇靠我投降了测试了一堆包括全零的都OK就是WA到死阿。。我无耻的COPY别人的数据AC。。这发一帖贴上自己的源码好了。。。提醒一下一句话 “If there is still a tie, choose the one that spends as long as possible at lake 2” 不然的话最开始的会是25,5。。。麻痹这题目这么设计真是蛋疼。。。。。。。。。 #include <iostream> using namespace std; int tmpfish = 0; int FFF[25] = {0}; void solutionsmall(int HH,int ii,int FF[],int DD[],int timet[]) { int i,j; int maxnum = 0; if(ii == 0) { for(;HH > 0 && FF[0] > DD[0];HH--) { tmpfish = tmpfish + FF[0]; FF[0] = FF[0] - DD[0]; timet[0] = timet[0] + 5; } return; } for(i = 1;i < ii + 1;i++) { if(FF[i] > FF[maxnum]) { maxnum = i; } } tmpfish = tmpfish + FF[maxnum]; FF[maxnum] = FF[maxnum] - DD[maxnum]; HH = HH - 1; timet[maxnum] = timet[maxnum] + 5; if(HH > 0) { if(FF[maxnum] >= 0) { solutionsmall(HH,ii,FF,DD,timet); } else { timet[maxnum - 1] = timet[maxnum - 1] + HH * 5; return; } } else { return; } } void solution(int N,int H,int F[],int D[],int T[] ) { int i,j; H = H * 12; int tmph = H; int time[25] = {0}; int allfish = 0; int first[25] = {0}; int k = 0; int recovery[25][25] = {0}; int nums; for(i = 1;i <= N;i++) { for(j = 0;j < i - 1;j++) { if(i - 1 > 0) { H = H - T[j]; } } solutionsmall(H,i - 1,F,D,time); first[k++] = time[0]; for(j = 0;j < i;j++) { recovery[k - 1][j] = time[j]; } if(tmpfish > allfish) { allfish = tmpfish; nums = i; } else if(tmpfish == allfish) { if(first[k - 1] > first[k]) { for(j = 0;j < i;j++) { time[j] = recovery[k - 1][j]; } } nums--; } H = tmph; tmpfish = 0; for(j = 0;j < i;j++) { F[j] = FFF[j]; } if(i != N) { for(j = 0;j < i;j++) { time[j] = 0; } } } for(i = 0;i < nums;i++) { if(i!= nums - 1) { cout<<time[i]<<","; } else { cout<<time[i]<<endl; } } cout<<"Number of fish expected:"<<allfish<<endl<<endl; } int main(void) { int n,h; int i,j; int f[25] = {0},d[25] = {0},t[24] = {0}; while(cin>>n) { if(n <= 0) { return 0; } else { cin>>h; for(i = 0;i < n;i++) { cin>>f[i]; FFF[i] = f[i]; } for(i = 0;i < n;i++) { cin>>d[i]; } for(i = 0;i < n - 1;i++) { cin>>t[i]; } solution(n,h,f,d,t); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator