POJ1042 Gone Fishing 贪心

本文介绍了一道经典的贪心算法题目——钓鱼问题,并详细解释了解题思路与代码实现过程。问题描述为:一个人在n个池塘间钓鱼,每个池塘随时间鱼的数量会减少,目标是在限定时间内获得最多的鱼。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Address:http://poj.org/problem?id=1042

 

这道题本来是想用DP做的,但是想了之后还是不得其解。最后还是翻翻书本,找到了贪心的思路,然后敲了下来。

 

因为忘了赋初始值贡献了一个WA,因为放着题目太久发现case之间得空行而贡献了一个PE。

 

【题意】

 

有个人去钓鱼。从左到右有n个池塘。且只能从左向右走。从一个池塘走到另一个池塘得花费时间。

 

每个池塘一开始每五分钟可钓Fi条鱼,随着时间增加,每五分钟可钓鱼数以Di的速率递减,当减少到小于等于Di时,以后在这个池塘就再也钓不到鱼。

 

如果鱼的数目相同,以在前面池塘呆的时间长为优先。

 

一个人总共付出h小时,即h*12个五分钟去钓鱼。问最多钓鱼数。

 

【思路】

 

假设这个人只在1~X的池塘中钓鱼,则其路程花费的时间是固定且可计算的。

 

也就是说出去这个固定的路程时间,其可以随时在任意一个池塘中钓鱼。

 

所以可贪心求出其在这X个池塘中钓到的最大鱼数。每个五分钟,取出X个池塘中可以钓到最多鱼的那个池塘并使其可钓鱼数减少。

 

然后让X从第一个池塘遍历到第n个池塘,取出其中最大的值即为答案。

 

【代码】

 

代码好像有点长,数组名称都取到不知道要取什么好了。

 

 

【P.S】

 

最近数据库的大作业也交了,顺便帮老师改了个东西。所以事情也暂告了一个段落。

 

虽然临近期末,但是这些课程的复习还是等真正期末的时候再来弄好了。毕竟需要真正复习的课也不是很多,而且现在也觉得课程的分数不是那么重要,最近更是连六级也觉得没什么所谓,这次也是裸考六级,毕竟自己已经过了。

 

所以这段时间还是得继续搞搞ACM,好好努力坚持下去。

 

顺便想想下学期的高校杯该如何下手。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值