[LUOGU] 1717 钓鱼

news/2024/11/29 22:40:30/
题目描述话说发源于小朋友精心设计的游戏被电脑组的童鞋们藐杀之后非常不爽,为了表示安慰和鼓励,VIP999决定请他吃一次“年年大丰收”,为了表示诚意,他还决定亲自去钓鱼,但是,因为还要准备2013NOIP,z老师只给了他H(1<=H<=16)个小时的空余时间,假设有N2<=n<=25)个鱼塘都在一条水平路边,从左边到右编号为123、。。。、n)。VIP是个很讲究效率的孩子,他希望用这些时间钓到尽量多的鱼。他从湖1出发,向右走,有选择的在一些湖边停留一定的时间钓鱼,最后在某一个湖边结束钓鱼。他测出从第I个湖到I+1个湖需要走5*ti分钟的路,还测出在第I个湖边停留,第一个5分钟可以钓到鱼fi,以后再每钓5分钟鱼,鱼量减少di。为了简化问题,他假定没有其他人钓鱼,也不会有其他因素影响他钓到期望数量的鱼。请编程求出能钓最多鱼的数量。输入输出格式输入格式:
第一行:湖的数量n。第二行:时间h(小时)。第三行:n个数,f1,f2,…fn。第四行:n个数,d1,d2,….dn。第五行:n-1个数,t1,t2,….tn-1输出格式:
一个数,所能钓鱼的最大数量。输入输出样例输入样例#1: 复制
2
1
10  1
2  5
2
输出样例#1: 复制
31

昨天想到的写法是,在右边的池塘钓鱼后返回左边钓到的鱼就等价于从左边到达右边,则路上耗时的最小值就是t[最远到达的点]*5,再用合并果子的思想每次取出最大的一个,减去d[堆顶元素]再重新维护一次堆。

只能过样例,也想通为什么了。

极限思想:假设很远很远的地方有一个最大的鱼塘,而很近的地方有一个比它略小但是仍然很大的鱼塘,显然跑到后面钓鱼不合适,废。

正解是用枚举构造条件(最远到达点)辅助堆进行选择,n次选择后就可以了。

几个细节是

  1. 关于堆中元素的序号,可以用一个数组ids存,维护堆的时候顺便swap了ids
    2. 在维护堆的时候,break条件应该或一个(hp[next] == hp[now]&&d[next]>d[now]),因为当两个鱼塘都有一样的鱼时(在枚举的范围内),显然应该选择减少较慢的鱼塘。

第二个不加也行,本质上先钓哪个都一样

堆的应用!

#include<iostream>
#define MAXN 2000
using namespace std;int n,h,oh;int f[MAXN],d[MAXN],t[MAXN];int ids[MAXN];
int hp[MAXN];
int size,mxsz;int ans,mx;void reb(int x) {int now=x,next;while(now<<1<=mxsz) {next=now<<1;if(next<mxsz&&hp[next] <hp[next+1] ) next++;if(hp[next] <hp[now] ||(hp[next] == hp[now]&&d[next]==d[now]) ) break;swap(hp[next],hp[now]);swap(ids[next],ids[now]);now=next;}
}int main() {cin>>n>>oh;oh*=60;int i;for(i=1; i<=n; i++) cin>>f[i];for(i=1; i<=n; i++) cin>>d[i];for(i=2; i<=n; i++) cin>>t[i],t[i]+=t[i-1];for(i=1; i<=n; i++) {h=oh;for(int j=1; j<=i; j++) {hp[j]=f[j];ids[j]=j;}mxsz=i;for(int j=1; j<=i>>1; j++) reb(j);ans=0;while(h-5-5*t[i]>=0) {//5*!h-=5;ans+=hp[1];hp[1]-=d[ids[1]];reb(1);if(hp[1]<=0) break;}mx=max(mx,ans);}cout<<mx<<endl;return 0;
}

http://www.ppmy.cn/news/889771.html

相关文章

渔网-粘网:粘网捕鱼技巧

ylbtech-渔网-粘网:粘网捕鱼技巧渔获多少一方面取决于渔网,另一方面取决于捕鱼者经验,有经验的渔友会结合当地水域环境、季节、鱼类来 判断鱼层深浅从而正确选择对应的渔网规格以此获得最大限度的渔获,所以捕鱼经验也是至关重要的,这个需要通过“实战”积累。 1.返回顶部…

28掌握钓鱼营销的方法

什么是钓鱼营销,男同学可能都去钓过鱼、小龙虾,那么我们就会知道,在我们钓鱼的时候会撒下饵料打窝,而后再下甩钩。 而钓鱼营销则是如此的相似的,常见的形式一般为,舆论+促成,活动+促成,让利+促成等多种形式。其中最常用的则是通过舆论、新闻作为诱饵产生营销的方式和方…

水深6到9米有鱼吗_红黄尾鲴鱼钓法大全(附配方)

本文选自老鬼论坛“修炼幸福的悲欢”原创文 鲴鱼是细鳞斜颌鲴、黄尾密鲴、圆吻鲴、银鲴等四种鲴鱼统称&#xff0c;属鲤形目、鲤科、密鲴亚科、鲴属。其中黄尾密鲴是湖南省洞庭湖水系的名产&#xff0c;由于此鱼鳍与鱼尾分别呈青黄色与桔黄色&#xff0c;规格一般在500克左右&a…

鱼叉式网络钓鱼

鱼叉式网络钓鱼&#xff08;Spear phishing&#xff09;指一种源于亚洲与东欧只针对特定目标进行***的网络钓鱼***。 由于鱼叉式网络钓鱼锁定之对象并非一般个人&#xff0c;而是特定公司、组织之成员&#xff0c;故受窃之资讯已非一般网络钓鱼所窃取之个人资料&#xff0c;而是…

钓鱼网站特征总结

RT。最近看了蛮多篇论文总结的。 特征是有了&#xff0c;关键是要想好怎么用。 后来又总结的一个图&#xff1a;

新套路+老配方 | 2023年网络钓鱼攻击新方式

在过去的几年&#xff0c;随着网络攻击技术的更新进步&#xff0c;攻击活动日益猖獗。企业不得不改变和增加防范手段&#xff0c;不断进步和优化办公策略来减少安全事件的发生。 如今超过90%的数据泄露是由“云钓鱼”为主的网络钓鱼攻击造成的。根据帕洛阿尔托研究报告&#x…

钓鱼(一)

前言 昨晚公众号看的文章一道针对安全人员进行定向攻击的CTF题&#xff0c;满有意思的复现一波。 复现 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>about</title> <script> function addLink() {var…

网络安全之钓鱼

###【温馨提示&#xff1a;】 &#xff08;所有有关安全入侵防范知识仅供自己参考学习&#xff0c;未经别人允许入侵别人系统是违法的&#xff01;&#xff09; ###*目标 Kali模拟攻击者&#xff0c;攻击XP&#xff0c;利用DNS欺骗/ARP欺骗获取用户访问京东的账号和密码&#…