poj1042 Gone Fishing 贪心

来源:互联网 发布:电算化会计软件下载 编辑:程序博客网 时间:2024/05/17 23:32


//pku1042 参考刘的黑皮书//http:poj.org/problem?id=1042//代码:#include<iostream>#include<cstdio>using namespace std;const int MAXN=27;int main(){int n,h;// #ifndef Online_JUDGE// freopen("pku1042.txt","r",stdin);// #endifwhile(cin>>n,n){cin>>h;h*=12;int i,j;int f[MAXN]={0};int d[MAXN]={0};int t[MAXN]={0};for(i=0;i<n;i++)cin>>f[i];for(i=0;i<n;i++)cin>>d[i];for(i=1;i<n;i++)cin>>t[i]; int now;//表示所在的位置int num[MAXN][MAXN];memset(num,0,sizeof(num));for(i=1;i<=n;i++)//前i个湖,贪心嘛,就是不要走回头路,i是结束点{int fs[MAXN];memcpy(fs,f,sizeof(f));//fs为f的副本h-=t[i-1];//扣掉走路的时间int time=h;int flag=0;//表示湖的鱼数为0的个数;while(time>0&&flag!=i){now=0;for(j=1;j<i;j++)//找到鱼数最多的湖if(fs[j]>fs[now])now=j;num[i][0]+=fs[now];//加鱼num[i][now+1]++;//加次数time--;if(fs[now]>0)//扣掉可钓鱼数/(5min){fs[now]-=d[now];if(fs[now]<0)fs[now]=0;}flag=0;for(j=0;j<i;j++)if(fs[j]<=0)flag++;}num[i][1]+=time;//把剩下的时间都花在i湖}now=1;for(j=2;j<=n;j++)if(num[j][0]>num[now][0])now=j;for(j=1;j<=n;j++){cout<<num[now][j]*5;if(j!=n)cout<<", ";}cout<<endl;cout<<"Number of fish expected: "<<num[now][0]<<endl<<endl;}return 0;}


原创粉丝点击