POJ 1042 Gone Fishing#贪心
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int N=30;
int n,h,H;//H:记录原本有多少小时的时间;h:贪心的时候,防止H被修改
int res[N],RES[N];//res[]:贪心的时候保存结果;RES[]:用于记录最终结果
int maxn,sum;//maxn:保存最终结果,即捕到的鱼最大值;sum:每轮贪心的时候,用来保存鱼最大值 struct ff
{
int f,d,t;//f:第i个湖里原本有的鱼数,d:第i个湖被捕过之后的鱼数,t:从第i-1到第i个湖需要的时间
};
ff f[N],F[N]; int main()
{
while(scanf("%d",&n)&&n)
{
memset(RES,0,sizeof(RES));
maxn=0;
scanf("%d",&H);
H*=12; //以5min为单位,输出结果的时候,记得乘以5
RES[0]=H;//赋初值H,因为有可能1……n-1湖都没有鱼,时间就都花在第一个湖了
for(int i=0;i<n;i++)
scanf("%d",&F[i].f);
for(int i=0;i<n;i++)
scanf("%d",&F[i].d);
for(int i=1;i<n;i++)
scanf("%d",&F[i].t); for(int k=0;k<n;k++)
{//在第0到第k个湖之间捕鱼
h=H;
sum=0;
memset(res,0,sizeof(res));
for(int i=0;i<n;i++)
f[i].f=F[i].f;//避免F[]被修改
for(int i=1;i<=k;i++)
h-=F[i].t; //把到第k个湖之前所用的时间全部减去,剩下的时间来捕鱼
if(h<=0) break; while(h--)
{//只要有时间,每次都去鱼最多的湖抓鱼(贪心)
int index=0;
for(int i=1;i<=k;i++)
if(f[i].f>f[index].f)
index=i;
sum+=f[index].f;
f[index].f-=F[index].d;//第index个湖被捕之后,就会少掉d条鱼,要更新f[].f值
if(f[index].f<0)
f[index].f=0;//还要注意避免负值
res[index]++;//只要在第index个湖捕鱼,那么在第index个湖就花去了时间1(单位为/5min)
}
if(sum>maxn)
{//更新最大值maxn,找到最优的状态,把数据记录在RES[]中,因为res[]会清零并用于下一轮的记录
maxn=sum;
for(int i=0;i<=k;i++)
RES[i]=res[i];
}
}
for(int i=0;i<n-1;i++)
printf("%d, ",RES[i]*5);//记得*5
printf("%d\n",RES[n-1]*5);//记得*5
printf("Number of fish expected: %d\n\n",maxn);
}
return 0;
}
POJ 1042 Gone Fishing#贪心的更多相关文章
- POJ 1042 Gone Fishing (贪心)(刘汝佳黑书)
Gone Fishing Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 30281 Accepted: 9124 Des ...
- poj -- 1042 Gone Fishing(枚举+贪心)
题意: John现有h个小时的空闲时间,他打算去钓鱼.钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(John每在一个湖钓完鱼后,他只能走到下一个湖继续钓),John必须从1号湖开始钓起,但是他 ...
- POJ #1042 Gone Fishing - WA by a DP solution. TODO
I used DP instead of Greedy. But got WA on PoJ, though it passed all web-searched cases. Maybe I hav ...
- POJ 1042 Gone Fishing
题意:一个人要在n个湖中钓鱼,湖之间的路径是单向的,只能走1->2->3->...->n这一条线路,告诉你每个湖中一开始能钓到鱼的初始值,和每钓5分钟就减少的数量,以及湖之间的 ...
- POJ 1042 Gone Fishing( DP )
题意:小明打算做一个h((1 <= h <= 16))个小时钓鱼旅行.发现这里有n(2 <= n <= 25)个湖,而且所有的湖都在一条路的旁边.小明打算从第1个湖开始钓起,每 ...
- POJ 3190 Stall Reservations贪心
POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...
- POJ 2392 Space Elevator(贪心+多重背包)
POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...
- Poj/OpenJudge 1042 Gone Fishing
1.链接地址: http://bailian.openjudge.cn/practice/1042/ http://poj.org/problem?id=1042 2.题目: Gone Fishing ...
- Gone Fishing POJ 1042
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> us ...
随机推荐
- shell 脚本中for循环
昨天很痛苦的搞了一天的for循环,在服务器上运行没啥问题,在设备上运行总是不行,部分代码如下: for(i=1;i<$cnt+1;i++)do echo "xxxx" &g ...
- B+树概念学习
转载自 从B树.B+树.B*树谈到R 树 1.用阶定义的B树 B 树又叫平衡多路查找树.一棵m阶的B 树 (注:切勿简单的认为一棵m阶的B树是m叉树,虽然存在四叉树,八叉树,KD树,及vp/R树/R* ...
- Shell终端收听音乐--豆瓣FM命令行版
douban.fm Terminal-based douban.fm inspired by douban.fm.该版本版基于Python2.* 安装Python2.* pacman -S pytho ...
- 如何查看centos系统版本
[root@LAMP1 config]# cat /proc/version Linux version 2.6.32-279.el6.x86_64 (mockbuild@c6b9.bsys.dev. ...
- 改造vim
1.安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可: lingd@ubuntu:~/arm$sudo apt-get install vim vim-sc ...
- lumen框架
1,获取配置 app(); 说明:app()返回的是全局唯一的application对象,该对象的原型是Laravel\Lumen\Application 加载配置文件(config/app.php) ...
- Ubuntu 忘记密码
1重启电脑Shift键进入GRUB引导模式如下图所示,选择第二行的recovery mode. 2 安e进入recovery mode 编译kernel进行启动参数 3 在linux /boot/vm ...
- Webgis中关于Openlayers入门使用(一)安装及生成基本地图
一.WebGis项目中使用的版本2.12 下载地址:https://github.com/openlayers/ol2/releases https://github.com/openlayers/o ...
- Eclipse 打开当前文件所在的文件夹
两种方法: 1.安装EasyExplorer插件,有了这个插件就可以很方便地打开资源文件所在的文件夹了. EasyExplorer 从 http://sourceforge.net/projects/ ...
- 寒假学干货之------android开发环境
1.下载安装jdk(http://www.oracle.com/technetwork/java/javase/downloads/index.html)装se版的就可以了,复制jdk目录路径,之后配 ...