poj解题报告——1042
来源:互联网 发布:天猫是属于淘宝的吗 编辑:程序博客网 时间:2024/04/30 05:10
本题是一道贪心算法
贪心方法:
1. 枚举到的最远的一个湖泊,首先算好路上的总共时间(路程);
2.接着算出剩余钓鱼次数k.
3.设dij表示第i个湖泊第j次钓能钓到多少,算出前x个湖泊的所有情况
4.排序取前k个相加 再把时间加上就是答案.
#include<iostream>#include<string>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;struct node{ int t; int n;}a[5000000];int f[50],d[50],t[50];int time[50],tmp[50];int n,h,r;bool cmp(node a,node b){ if(a.t==b.t) return a.n<b.n; return a.t>b.t;}int main(){ bool fg=0;int i; while(scanf("%d",&n)&&n) { if(fg)printf("\n"); fg=1; scanf("%d",&h); 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 p,k,tt,tpa,ans; p=0,ans=-1; r=h*60; for(i=0;i<r;i++) { a[p].t=0; a[p++].n=0; } memset(time,0,sizeof(time)); for(i=0;i<n;i++) { if(i!=0) { if(r-t[i-1]*5>=0) r-=(t[i-1]*5); else break; } k=r/5,tt=tpa=0; if(d[i]==0) { for(int j=0;j<k;j++) { a[p].t=f[i]; a[p++].n=i; } } else { while(f[i]-d[i]*tt>0) { a[p].t=f[i]-d[i]*tt; a[p++].n=i; tt++; } } sort(a,a+p,cmp); memset(tmp,0,sizeof(tmp)); for(int j=0;j<k&&j<p;j++) { tmp[a[j].n]+=5; tpa+=a[j].t; } if(tpa>ans) { memcpy(time,tmp,sizeof(tmp)); ans=tpa; } } for(int i=0;i<n;i++) printf("%d%s",time[i],i!=n-1?", ":"\n"); printf("Number of fish expected: %d\n",ans); } return 0;}
0 0
- poj解题报告——1042
- POJ 1042 解题报告
- POJ 1042 解题报告
- POJ 1088 滑雪——解题报告
- POJ 1047——解题报告
- poj解题报告——poj1006
- poj解题报告——1032
- poj解题报告——1061
- poj解题报告——1450
- poj解题报告——1002
- poj解题报告——2109
- poj解题报告——1218
- poj解题报告——1250
- poj解题报告——1012
- poj解题报告——3299
- poj解题报告——2209
- poj解题报告——2406
- poj解题报告——2242
- JS获取CSS属性值
- Objective_C中常见的集合类
- 安装jdk出现问题:Error opening registry key'software\Javasoft\Java Runti
- 关注的IT企业
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- poj解题报告——1042
- Mantis -- linux
- ios app的分类与本质,感想
- Hdu 1241
- HDU 1019 Least Common Multiple
- llvm+clang的安装(使用cmake)
- 设计模式六大原则
- jsp版本端口转发
- Android SwipeMenuListView