鱼塘钓鱼

  • 题目
  • 解题思路
  • Code

一本通评测 1373:鱼塘钓鱼(fishing)


题目

【题目描述】
有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表:

鱼塘编号每1分钟能钓到的鱼的数量(1…1000)每1分钟能钓鱼数的减少量(1…100)当前鱼塘到下一个相邻鱼塘需要的时间(单位:分钟)11023214453206441654593
即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,……,第5分钟以后再也钓不到鱼了。从第1个鱼塘到第2个鱼塘需要3分钟,从第2个鱼塘到第3个鱼塘需要5分钟,……

给出一个截止时间T(T<1000),设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼。

假设能钓到鱼的数量仅和已钓鱼的次数有关,且每次钓鱼的时间都是整数分钟。

【输入】
共5行,分别表示:

第1行为N;

第2行为第1分钟各个鱼塘能钓到的鱼的数量,每个数据之间用一空格隔开;

第3行为每过1分钟各个鱼塘钓鱼数的减少量,每个数据之间用一空格隔开;

第4行为当前鱼塘到下一个相邻鱼塘需要的时间;

第5行为截止时间T。

【输出】
一个整数(不超过2^31−1),表示你的方案能钓到的最多的鱼。

【输入样例】

5
10 14 20 16 9
2 4 6 5 3
3 5 4 4
14

【输出样例】

76

解题思路

题目解释:少的鱼不是按时间算的,而是在当前鱼塘钓一次,当前鱼塘能钓的鱼就少一波
样例解释:第一个鱼塘钓一次,第二个两次,第三个三次,然后不钓了
贪心⭐
因为左右来回走肯定不优,在一个鱼塘把能钓的都钓了再走肯定更优
枚举最远到达哪个鱼塘,时间减去鱼塘之间的走路时间,结合上一点,问题变成可以来回随便走不算时间
固定时间内,走路已经不算时间了,那肯定去更多鱼的地方更优
把每个池塘现在能钓的鱼加进大根堆中,每次钓堆顶


Code

#include <bits/stdc++.h>
#define N 110using namespace std;int n, T, ti, ansn, ans, num[N], jian[N], t[N];
priority_queue<pair<int, int> > q; int main() {scanf("%d", &n);for(int i = 1; i <= n; i ++) scanf("%d", &num[i]);for(int i = 1; i <= n; i ++) scanf("%d", &jian[i]);for(int i = 1; i < n; i ++) {scanf("%d", &t[i]);t[i] += t[i - 1];}scanf("%d", &T);for(int i = 1; i <= n; i ++) {  //最远去哪个鱼塘ti = T - t[i - 1], ansn = 0;  //减去走路的时间while(!q.empty()) q.pop();for(int j = 1; j <= i; j ++)q.push(make_pair(num[j], j));  //每个鱼塘都丢进大根堆while(ti > 0 && q.top().first > 0) {ti --;ansn += q.top().first;  //钓最多的鱼int a = q.top().first - jian[q.top().second], b = q.top().second;  //钓一次会少鱼,更新鱼塘的情况q.pop();q.push(make_pair(a, b));}ans = max(ans, ansn);}printf("%d", ans);
}

【一本通评测 1373】【堆】【贪心】鱼塘钓鱼相关推荐

  1. 【c++一本通】【堆】鱼塘钓鱼

    [c++一本通][堆]鱼塘钓鱼 题目 解题思路 枚举去到的最远的鱼塘 减去花费在路程上的时间,剩下的就是用来钓鱼的时间 将能到达的鱼塘初始的鱼,加入堆 然后取出堆顶,加入其下一次钓到的鱼的数量 直到时 ...

  2. SSL 2331 洛谷 1717 信息学奥赛一本通 1373 鱼塘钓鱼#贪心#

    动态规划 温馨提示:交洛谷请在总时间*12并调整输入格式. 题目 设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼. 分析 首先是贪心,最后在第i个鱼塘钓鱼的话,那么路上的时间是固定的,所以也可 ...

  3. 1373:鱼塘钓鱼(fishing)——优先队列+贪心

    [题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...

  4. 信息学奥赛一本通 1373:鱼塘钓鱼(fishing)

    [题目链接] ybt 1373:鱼塘钓鱼(fishing) [题目考点] 1. 动态规划:区间动规 2. 贪心 优先队列 [解题思路] 解法1:区间动规 该人只会从编号小的鱼塘走到编号大的鱼塘,不存在 ...

  5. 鱼塘钓鱼(信息学奥赛一本通-T1373)

    [题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...

  6. 堆——鱼塘钓鱼:简直爽!

    我人生中的第一篇博客:想想还有点小激动呢! 鱼塘钓鱼(fishing) [问题描述]      有N个鱼塘排成一排(N<100),在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8 ...

  7. 鱼塘钓鱼 优先队列 多路归并排序 贪心

    鱼塘钓鱼 优先队列 多路归并排序 贪心 优先队列介绍 贪心思想:不会回头 解题思想:枚举0-N-1目的地鱼塘k, 如图 从上到下 选t(钓鱼的时间)个数,使和最大 #include<iostre ...

  8. 【一本通评测 1371】【堆】看病

    看病 题目 解题思路 Code 一本通评测 1371:看病 题目 [题目描述] 有个朋友在医院工作,想请BSNY帮忙做个登记系统.具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空 ...

  9. 1042 Gone Fishing[DP/贪心]:钓鱼问题+易错数据集

    题目大意 题目链接 去钓鱼,有n条湖按顺序排列,每条湖初始鱼量为fi,钓一个时间片就减少di条鱼,最小减到0条鱼,每条湖间的行走时间为ti个时间片(一个时间片为5分钟),给定时间h小时(一个小时12个 ...

最新文章

  1. Transformer 眼中世界 Vs. CNN 眼中世界
  2. httpd服务器常见漏洞修复,网站安全监测以及漏洞修复过程
  3. JAVA实现调整数组顺序使奇数位于偶数前面问题(《剑指 offer》)
  4. 在组策略中通过.zap的形式发布软件!
  5. 企业信息化的创新与出路
  6. html app的登陆、注册,登陆_注册.html
  7. 用Unity3D实现简单的牧师与魔鬼游戏(动作分离版)
  8. SeaweedFS在.net core下的实践方案
  9. oracle导入1542错误,Oracle 12c:ORA-28040 ORA-01017
  10. python强制释放内存_强制Python释放对象以释放内存
  11. 禁用“微软 Windows 10 易升”
  12. 装饰器只有python才有吗_Python装饰器入门详解
  13. 关于微信小程序web开发者工具模拟器出现空白问题
  14. uniapp基础开发模板
  15. WIN7封装教程2018系列(六)—封装
  16. oracle 分区表,分区索引
  17. Activiti6:模拟钉钉上面的请假流程(使用web画图并导出xml然后使用java执行流程)
  18. mcs51单片机嵌入式c语言习题,MCS-51单片机复习题参考题库.doc
  19. 详解mmap:是什么 为什么 怎么用
  20. Android组件间数据传递

热门文章

  1. css动画(图片触碰变大)
  2. php 输入 输出,php的文件输入输出流php://input
  3. Linux下创建符号链接(软链接)
  4. MYSQL修改密码版本5.7.29提示Unknown column ‘password‘ in ‘field list‘。
  5. 纯函数式编程语言_函数式编程正在接管具有纯视图的UI。
  6. 【OpenCV】9th-关于argc
  7. oracle planning bom,OracleERP表结构--BOM模块
  8. 交易员偏爱市场的理由
  9. cad视口缩放区域怎么使用_cad视口(cad布局和视口使用教程)
  10. 蝴蝶效应,青蛙现象,鳄鱼法则,鲇鱼效应,羊群效应,刺猬法则,手表定律,破窗理论,二八定律,木桶理论,马太效应,这些你都明白吗