POJ 1042 Gone Fishing
2014-09-03 20:42
316 查看
POJ 1042 Gone Fishing
一个人去钓鱼 有n个池塘 有h小时的时间可以用来钓鱼 从一个池塘走到下一个池塘需要ti*5分钟
在同一个池塘钓鱼过程中 每五分钟再之后 能钓到的鱼会减少di条 一开始可以钓到fi条鱼
刚看到这题 感觉变量好多 好乱 完全没什么思路
因为是要按池塘的顺序去钓鱼 所以可以枚举当前池塘之前所能钓到的最多鱼的数量
记录鱼塘中现在能掉到的鱼的数量 取当前能钓到鱼最多的池塘 对它进行一次操作
还要记录在每个池塘所花的时间
一个人去钓鱼 有n个池塘 有h小时的时间可以用来钓鱼 从一个池塘走到下一个池塘需要ti*5分钟
在同一个池塘钓鱼过程中 每五分钟再之后 能钓到的鱼会减少di条 一开始可以钓到fi条鱼
刚看到这题 感觉变量好多 好乱 完全没什么思路
因为是要按池塘的顺序去钓鱼 所以可以枚举当前池塘之前所能钓到的最多鱼的数量
记录鱼塘中现在能掉到的鱼的数量 取当前能钓到鱼最多的池塘 对它进行一次操作
还要记录在每个池塘所花的时间
<pre name="code" class="cpp">#include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <algorithm> #include <string.h> #include <string> #include <queue> #define eps 1e-8 #define op operator #define MOD 10009 #define MAXN 100100 #define FOR(i,a,b) for(int i=a;i<=b;i++) #define FOV(i,a,b) for(int i=a;i>=b;i--) #define REP(i,a,b) for(int i=a;i<b;i++) #define REV(i,a,b) for(int i=a-1;i>=b;i--) #define MEM(a,x) memset(a,x,sizeof a) #define ll __int64 using namespace std; int t[30]; struct node { int f;//鱼的数量 int d;//减的速度 int order;//鱼塘序号 bool operator <(const node p)const { if(f==p.f) return order>p.order;//序号小的优先 return f<p.f;//鱼多的优先 } }; node no[30]; node q; int main() { //freopen("ceshi.txt","r",stdin); int n; int cnt=0; while(scanf("%d",&n)!=EOF) { if(n==0) break; int h; scanf("%d",&h); for(int i=0;i<n;i++) { scanf("%d",&no[i].f); no[i].order=i; } for(int i=0;i<n;i++) scanf("%d",&no[i].d); for(int i=1;i<n;i++) scanf("%d",&t[i]); t[0]=0; h*=60; // cout<<"hh "<<h<<endl; int ans=-1;//ans=0就WA!!! int laketime[30],lktime[30]; MEM(laketime,0); priority_queue<node> Q; for(int i=0;i<n;i++) { h-=t[i]*5; MEM(lktime,0); int time=h; // cout<<"tt "<<time<<" iii "<<i<<endl; for(int j=0;j<=i;j++) { Q.push(no[j]); } int sum=0; while(!Q.empty()) { q=Q.top(); Q.pop(); if(time>0&&q.f>0) { sum+=q.f; time-=5; q.f-=q.d; lktime[q.order]+=5; Q.push(q); } } // cout<<"time "<<time<<" lktime"<<lktime[0]<<endl; lktime[0]+=time; if(sum>ans) { ans=sum; for(int j=0;j<=i;j++) laketime[j]=lktime[j]; } } if(cnt>0) puts(""); cnt++; printf("%d",laketime[0]); for(int i=1;i<n;i++) printf(", %d",laketime[i]); puts(""); printf("Number of fish expected: %d\n",ans); } return 0; }
相关文章推荐
- 【POJ1042】Gone Fishing 黑书上第一道贪心题。
- 【贪心】poj1042 Gone Fishing
- poj 1042 Gone Fishing
- POJ-1042 Gone Fishing (贪心法求最佳钓鱼方案
- POJ 1042 Gone Fishing
- POJ 1042 Gone Fishing
- POJ 1042 Gone Fishing (枚举+贪心)
- POJ-1042:Gone Fishing
- poj 1042 Gone Fishing
- 【解题报告】poj1042 Gone Fishing
- POJ 1042 -Gone Fishing
- POJ 1042 Gone Fishing
- POJ 1042 Gone Fishing
- POJ 1042 Gone Fishing (DP)
- POJ 1042 Gone Fishing 贪心 枚举
- Poj 1042 Gone Fishing
- POJ1042 Gone Fishing
- poj 1042 Gone Fishing
- POJ 1042 Gone Fishing
- POJ 1042:Gone Fishing