博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ssl2331&&OJ1373-鱼塘钓鱼 之2【贪心堆优化】
阅读量:4466 次
发布时间:2019-06-08

本文共 995 字,大约阅读时间需要 3 分钟。

前言

上篇:

下篇:
题目:


正题

有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头)。求限定时间内最多能够钓到的鱼数


解题思路

由于是贪心优化,所以引用一下上篇的贪心

由于数据较小,我们枚举一下最后到达的池塘,然后在开始计算时间时就减去路程然后就可以在计算时不需要计算路程问题了。然后每次找最多鱼的池塘钓,然后减那个池塘的鱼数(这里讲一下原理,由于我们不能确定这时是继续钓好还是去下一个池塘钓好,于是我们就用这种方法确定每个池塘应该钓多久),以此类推直到时间耗尽,然后每次更新最大答案。

开一个大根堆,每次用堆来快速确定最大值。


代码

#include
#include
#include
using namespace std;struct water{ int fish,number; //记录鱼塘鱼数和编号};water a[101];int tn,lt,num[101],t[101],mov[101],sum,n,m;void up(int x)//维护堆{ while (x>1 && a[x].fish>a[x/2].fish) { swap(a[x],a[x/2]); x/=2; }}void down(int x)//维护堆{ int y; while (x*2<=tn && a[x].fish
0 && a[1].fish>0)//时间耗尽或每鱼了 { ans+=a[1].fish;//钓 a[1].fish-=mov[a[1].number];//减去 down(1);//维护堆 time--;//消耗时间 } sum=max(sum,ans);//h更新最大值 lt+=t[k];//提前计算路程 } printf("%d",sum);}

转载于:https://www.cnblogs.com/sslwyc/p/9218579.html

你可能感兴趣的文章
NOIP2015-D2T3运输计划
查看>>
Z :彻底了解指针数组,数组指针以及函数指针 [复
查看>>
2013年终总结
查看>>
Start to study Introduction to Algorithms
查看>>
AE常见接口之间的关系(较笼统)+arcgis常见概念
查看>>
正则表达式
查看>>
三元操作设计不同类型的时候,最终结果的问题
查看>>
POJ 1661 Help Jimmy LIS DP
查看>>
大数据时代,我诚惶诚恐的拥抱
查看>>
c++小游戏——五子棋
查看>>
浏览器全屏非全屏切换
查看>>
2.CSS 颜色代码大全
查看>>
Native与H5交互的一些解决方法
查看>>
三、基于hadoop的nginx访问日志分析--计算时刻pv
查看>>
SpringCloud Config客户端
查看>>
OAuth 开放授权 Open Authorization
查看>>
最大似然估计(Maximum likelihood estimation)(通过例子理解)
查看>>
urlRewrite url重写
查看>>
团队冲刺第六天
查看>>
integer promotion
查看>>