POJ1042 贪心钓鱼
题意:
你有H小时(H*12个单位)时间去用,有n个鱼池在一条直线上,一开始你在1的位置,可以选择在某些鱼池上钓鱼,但是如果持续在一个鱼池上钓鱼钓鱼速度回成线性减少,初始每个时间单位钓fi条,然后下一个时间单位钓fi-di条,再下一个fi-di-di条,每个鱼池和他下一个鱼池的距离是ti个时间单位,最后你可以听到任意一个鱼池上,问最多钓多少条鱼,然后输出在个鱼池的停留时间和最多的鱼数。
思路:
枚举终点,对于每一个枚举的终点也就是相当于拥有了一段可以随意选的鱼塘,然后我们在枚举区间没一个单位一个单位的去选,每次都去选最优的一个,然后加到总和里,然后把当前这个鱼塘的速度改变下,这里可以用优先队列去实现,每次拿出一个最优的,然后更新总和,然后把拿出来这个更改数值后存回队列,还有就是注意输出要求,答案不确定的时候输出什么啥的一些小细节。
#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef struct NODE
{
int id ,f ,d;
friend bool operator < (NODE a ,NODE b)
{
return a.f < b.f || a.f == b.f && a.id > b.id;
}
}NODE;
int main ()
{
int n ,h ,i ,j ,sum ,tsum;
int ans[30] ,tans[30];
int tt[30];
NODE node[30];
int mk = 0;
while(~scanf("%d" ,&n) && n)
{
if(mk) printf("\n");
mk = 1;
scanf("%d" ,&h);
for(i = 1 ;i <= n ;i ++)
{
scanf("%d" ,&node[i].f);
node[i].id = i;
}
for(i = 1 ;i <= n ;i ++)
scanf("%d" ,&node[i].d);
for(i = 1 ;i < n ;i ++)
scanf("%d" ,&tt[i]);
memset(ans ,0 ,sizeof(ans));
sum = -1;
int s = 0;
h *= 12;
for(i = 1 ;i <= n ;i ++)
{
if(i == 1) s = 0;
else s += tt[i-1];
if(s > h) break;
priority_queue<NODE>q;
NODE xin ,tou;
for(j = 1 ;j <= i ;j ++)
q.push(node[j]);
int hh = h - s;
memset(tans ,0 ,sizeof(tans));
tsum = 0;
while(hh--)
{
tou = q.top();
q.pop();
tans[tou.id] += 5;
tsum += tou.f;
tou.f -= tou.d;
if(tou.f < 0) tou.f = 0;
q.push(tou);
}
if(tsum > sum)
{
for(j = 1 ;j <= n ;j ++)
ans[j] = tans[j];
sum = tsum;
}
}
for(i = 1 ;i <= n ;i ++)
{
if(i == n) printf("%d\n" ,ans[i]);
else printf("%d, ",ans[i]);
}
printf("Number of fish expected: %d\n" ,sum);
}
return 0;
}
POJ1042 贪心钓鱼相关推荐
- POJ1042 John钓鱼 C语言代码
POJ1042 题目不再描述了,上面是网址超链接. 个人遭遇···: 简而言之,读了N遍题.脑子里想了半天(time>=1.5h),出现了无数想法,考虑了很多情况,仍然找不到切入点.于是,我就是 ...
- c 语言贪心钓鱼思路,2020届九年级中考语文复习教案:第4讲现代文阅读之概括(27页)-原创力文档...
PAGE14 / NUMPAGES16 第4讲 现代文阅读之概括 (一) 模块 分值 2019 2018 2017 2016 2015 2014 现代文阅读概括 \ \ 3 3 \ \ 概括 年份 题 ...
- 鱼塘钓鱼 优先队列 多路归并排序 贪心
鱼塘钓鱼 优先队列 多路归并排序 贪心 优先队列介绍 贪心思想:不会回头 解题思想:枚举0-N-1目的地鱼塘k, 如图 从上到下 选t(钓鱼的时间)个数,使和最大 #include<iostre ...
- 1373:鱼塘钓鱼(fishing)——优先队列+贪心
[题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...
- 贪心算法-鱼塘钓鱼程序
1.题目描述 约翰有h(1≤h≤16)个小时的时间,在该地区有n(2≤n≤25)个湖,这些湖刚好分布在一条路线上,该路线是单向的.约翰从湖1出发,他可以在任一个湖结束钓鱼.但他只能从一个湖到达另一个与 ...
- java买房子钓鱼,AcWing 1262. 鱼塘钓鱼(Java 贪心 Or 优先队列)
算法1 贪心 先考虑最远到哪个鱼塘,把路上的时间预先减掉,剩下的就是完全用于钓鱼的时间注意这里不用考虑折返的情况,因为如果折返前一个池塘钓鱼可以得到更优解,那么完全可以在之前就接着钓 因为一分钟计算一 ...
- 【一本通评测 1373】【堆】【贪心】鱼塘钓鱼
鱼塘钓鱼 题目 解题思路 Code 一本通评测 1373:鱼塘钓鱼(fishing) 题目 [题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 鱼 ...
- SSL 2331 洛谷 1717 信息学奥赛一本通 1373 鱼塘钓鱼#贪心#
动态规划 温馨提示:交洛谷请在总时间*12并调整输入格式. 题目 设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼. 分析 首先是贪心,最后在第i个鱼塘钓鱼的话,那么路上的时间是固定的,所以也可 ...
- 算法经典“钓鱼”问题详解 基于贪心算法 C语言描述
算法经典"钓鱼"问题详解 基于贪心算法 初始条件 在一条水平路边,有 n 2 ≤ n ≤ 25个钓鱼池,从左到右编号为1.2.3.--.n.小明有H1 ≤ H ≤ 16个小时的空余 ...
最新文章
- 所有类是object的子类,但是又可以继承一个其他类解析
- Win10一周更新系统开始面向企业分支推送
- 密码强度测试工具包【Java】_测试用例
- oracle10g 开机自启动
- CodeForces - 1344D Monopole Magnets(dfs)
- [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]
- Vue-Router中History模式【华为云分享】
- 不同模块下包重名怎么解决_口臭怎么解决?|盘点不同类型口臭的去除方法
- 1v1项目实战+真实经验倾囊相授,0基础的我是如何逆袭成功?
- 达梦数据库的表空间及用户管理
- 头的各个部位示意图_人体头部结构图:人体图片头部组织图文解读
- 参数validator/valid校验用法(通俗)
- Android 报错 : FATAL EXCEPTION:main 解决方法
- 程序员大佬都在用的代码编辑器,你不用就OUT啦
- xposed框架的检测和反制
- Construct 2 制作游戏心得
- 6个免费PPT模板网站,简直不要太好用
- handlebars学习总结
- java基础入门了解
- 西风不暖当年月,一别经年再相逢