poj 1042(分类讨论,模拟)

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
    int i,j,k,n,h,h_t,f[30],d[30],sheng[30],t[30],ans_t[30][30],sum_fish[30];
    int st,sum_t,sum_fish_t,sum_fish_i,tmp,tmp_i;
    while(scanf("%d",&n)==1&&n){
        scanf("%d",&h);
        for(i=1;i<=n;i++){
            scanf("%d",&f[i]);
        }
        for(i=1;i<=n;i++){
            scanf("%d",&d[i]);
        }
        for(i=1;i<n;i++){
            scanf("%d",&t[i]);
        }
        memset(ans_t,0,sizeof ans_t);
        for(k=1;k<=n;k++){
            h_t = 12*h;//共多少个5分钟
            for(st=0,i=1;i<k;i++){
                st += t[i];
            } 
            for(i=1;i<=k;i++){
                sheng[i] = f[i];
            }
            sum_t = h_t-st;
            sum_fish[k] = 0;
            for(i=1;i<=sum_t;i++){
                tmp = sheng[1];
                tmp_i = 1;
                for(j=2;j<=k;j++){
                    if(tmp<sheng[j]){
                        tmp_i = j;
                        tmp = sheng[j];
                    }
                }
                 sum_fish[k] += sheng[tmp_i];
                ans_t[k][tmp_i]++;
                if(sheng[tmp_i]-d[tmp_i]<0)sheng[tmp_i] = 0;
                else sheng[tmp_i] -= d[tmp_i];
            }
//            for(i=1;i<=n;i++){
//                cout<<k<<" "<<i<<" "<<ans_t[k][i]<<endl;
//            }
//            cout<<sum_fish[k]<<endl;
        }
        sum_fish_t = sum_fish[1];
        sum_fish_i = 1;
        for(k=2;k<=n;k++){
            if(sum_fish_t<sum_fish[k]){
                sum_fish_i = k;
                sum_fish_t = sum_fish[k];
            }
        }
        printf("%d",ans_t[sum_fish_i][1]*5);
        for(i=2;i<=n;i++){
            printf(", %d",ans_t[sum_fish_i][i]*5);
        }
        printf("\nNumber of fish expected: %d\n\n",sum_fish_t);
    }
    return 0;
}

 

上一篇:2亿用户背后的Flutter最新开源框架;Fish-Redux,安卓开发面试题目


下一篇:CF16E Fish 状压dp + 概率