1 条题解
-
0
C++ :
#include<cstdio> #include<cstring> using namespace std; int fi[28],di[28],ti[28],f[28]; int Enum(int end,int h,int *t){ int left=h,max=0,v=1,sum=0,i; for(i=1;i<end;i++) {left-=5*ti[i];f[i]=fi[i];} f[end]=fi[end]; while(left>0){ max=0; for(i=1;i<=end;i++) if(f[i]>max) {max=f[i];v=i;} if(!max) break; f[v]-=di[v]; sum+=max; t[v]+=5; left-=5; } t[1]+=left; return sum; } int main(){ int n,h,i,j,max=0,m,ans[28],t[28]; while(~scanf("%d",&n)&&n) { max=-1; scanf("%d",&h);h*=60; for(i=1;i<=n;i++) scanf("%d",&fi[i]); for(i=1;i<=n;i++) scanf("%d",&di[i]); for(i=1;i<n;i++) scanf("%d",&ti[i]); for(i=1;i<=n;i++){ memset(t,0,sizeof(t)); m=Enum(i,h,t); if(m>max) {max=m;for(j=1;j<=n;j++) ans[j]=t[j];} } for(i=1;i<n;i++) printf("%d, ",ans[i]); printf("%d\nNumber of seeds collected: %d\n",ans[n],max); } }
- 1
信息
- ID
- 707
- 时间
- 3000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者