1 条题解

  • 0
    @ 2025-2-14 21:11:41

    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
    上传者