ZOJ1161
来源:互联网 发布:mac 配置hadoop 编辑:程序博客网 时间:2024/06/03 21:20
#include<iostream>#include<vector>#include<string>#include<set>#include<memory.h>#include<cstdio>#include<list>#include<string>#include<map>#include<cmath>#include <algorithm>#include <queue>#define NUM 30#define maxint 10000000#define INF 0x3f3f3f3f#define Max 5001using namespace std;int c[NUM][NUM];//用邻接矩阵存储边和权int dist[NUM];string a;int k;struct Node{ int f;//初始时鱼的条数 int d;//鱼减少 int index;};int f[NUM];//初始时鱼的条数int d[NUM];//鱼减少int t[NUM];//时间int plan[NUM];//在每个湖所用的时间int best ;//void greedy(int pos, int time)//{// if (time <= 0) return;// int i, j;// int fish[NUM];// int p[NUM];// int t = 0;// for (i = 0; i <= pos; ++i)// fish[i] = f[i];// memset(p, 0, sizeof(p));// for (i = 0; i < time; ++i)// {// int max = 0;// int id = -1;// for (j = 0; j <= pos; ++j)// if (fish[j] > max){// max = fish[j];// id = j;// }// if (id != -1)// {// ++p[id];// fish[id] -= d[id];// t += max;// }// else ++p[0];// }// if (t > best)// { // best = t; // memset(plan, 0, sizeof(plan)); // for (i = 0; i <= pos; ++i)// plan[i] = p[i]; // } //}void greedy(int pos ,int time){ if(time <= 0) return; int Fish[NUM]; int P[NUM];//在每个湖用的时间 memset(P, 0, sizeof(P)); for(int i = 0;i<= pos;i++) { Fish[i] = f[i]; } int t = 0; while(time--) { int max = 0; int id = -1; for(int i = 0;i<=pos;i++) { if(max<Fish[i]) { max = Fish[i]; id = i; } } if(id != -1) { Fish[id] -= d[id]; t += max; P[id]++; } else { P[0]++; } } if(t>best) { for(int i = 0;i<=pos;i++) { plan[i] = P[i]; } best = t; }}int main(){ freopen("in.txt","r",stdin); int N; cin>>N; while(N--) { int n;//湖的个数 int h;//总时间 int flag = 0; while(scanf("%d",&n) && n!=0) { memset(plan, 0, sizeof(plan)); scanf("%d",&h); h*=12; int i ; for(i = 0;i<n;i++) { scanf("%d",&f[i]); } for(i = 0;i<n;i++) { scanf("%d",&d[i]); } for(i = 0;i<n-1;i++) { scanf("%d",&t[i]); } int time = 0; best = -1;//记录当前钓的鱼的条数 for(int i = 0;i<n && h-time;i++) { greedy(i , h - time); time += t[i]; } if (flag++) printf("\n"); for (i = 0; i < n - 1; ++i) printf("%d, ", plan[i] * 5); printf("%d\n", plan[n - 1] * 5); printf("Number of fish expected: %d\n", best); } if(N) printf("\n"); }}
0 0