博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1717 钓鱼
阅读量:7186 次
发布时间:2019-06-29

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

P1717 钓鱼

    • 41通过
    • 116提交
  • 题目提供者该用户不存在
  • 标签贪心
  • 难度提高+/省选-

提交该题   

最新讨论

  • 暂时没有讨论

题目描述

话说发源于小朋友精心设计的游戏被电脑组的童鞋们藐杀之后非常不爽,为了表示安慰和鼓励,VIP999决定请他吃一次“年年大丰收”,为了表示诚意,他还决定亲自去钓鱼,但是,因为还要准备2013NOIP,z老师只给了他H(1<=H<=16)个小时的空余时间,假设有N(2<=n<=25)个鱼塘都在一条水平路边,从左边到右编号为1、2、3、。。。、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:
2110  12  52
输出样例#1:
31

思路+AC代码:

/*  据说这是贪心非常经典的题,然而蒟蒻不会  首先我们可以知道这个人不会走回头路,因为走回头路还不如钓完再往前走并且如果我们假设这个人可以瞬移的话,他每时刻都要选可以钓鱼的数量最大的湖,所以我们假设ans[i]为他只在前i个湖中钓鱼所得到的最大鱼的数量,先把路径减掉,每次找鱼数量最大的湖。  貌似可以优先队列优化,然而数据太弱没有必要 */#include
using namespace std;#define N 31struct node{ int fish,reduce; node(int fish=0,int reduce=0):fish(fish),reduce(reduce){} bool operator < (const node &t) const{
return fish
que; for(int j=1;j<=i;j++) que.push(e[j]); int ans=0; while(times>=5){ if(que.top().fish<=0) break;//如果鱼数量最大的湖里没有鱼了,结束 int f=que.top().fish; int r=que.top().reduce; que.pop(); que.push(node(f-r,r)); ans+=f; mymax=max(mymax,ans); times-=5; } } printf("%d\n",mymax); return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/5754092.html

你可能感兴趣的文章
Java之谜 —— 来自Neal Gafter的演讲
查看>>
js压缩反压缩
查看>>
jdbc.properties 包含多种数据库驱动链接的版本。
查看>>
mac 安装mysql
查看>>
Event Managers
查看>>
14-python-函数
查看>>
Android HandlerThread详解
查看>>
兼职开发悟出的点点滴滴
查看>>
ConCurrentHashMap(基于jdk1.8源码)(转载来源https://segmentfault.com/a/1190000014380257)...
查看>>
总结一些知识点(附链接) 四
查看>>
笔试题①
查看>>
js 对象
查看>>
JavaScript 闭包
查看>>
Redis进阶学习笔记
查看>>
汉诺塔问题
查看>>
thinkphp路径替换
查看>>
安装apache
查看>>
httpd实现基于用户的访问控制
查看>>
The ADB instructions
查看>>
快速部署MongoDB
查看>>