【一本通评测 1373】【堆】【贪心】鱼塘钓鱼
鱼塘钓鱼
- 题目
- 解题思路
- 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】【堆】【贪心】鱼塘钓鱼相关推荐
- 【c++一本通】【堆】鱼塘钓鱼
[c++一本通][堆]鱼塘钓鱼 题目 解题思路 枚举去到的最远的鱼塘 减去花费在路程上的时间,剩下的就是用来钓鱼的时间 将能到达的鱼塘初始的鱼,加入堆 然后取出堆顶,加入其下一次钓到的鱼的数量 直到时 ...
- SSL 2331 洛谷 1717 信息学奥赛一本通 1373 鱼塘钓鱼#贪心#
动态规划 温馨提示:交洛谷请在总时间*12并调整输入格式. 题目 设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼. 分析 首先是贪心,最后在第i个鱼塘钓鱼的话,那么路上的时间是固定的,所以也可 ...
- 1373:鱼塘钓鱼(fishing)——优先队列+贪心
[题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...
- 信息学奥赛一本通 1373:鱼塘钓鱼(fishing)
[题目链接] ybt 1373:鱼塘钓鱼(fishing) [题目考点] 1. 动态规划:区间动规 2. 贪心 优先队列 [解题思路] 解法1:区间动规 该人只会从编号小的鱼塘走到编号大的鱼塘,不存在 ...
- 鱼塘钓鱼(信息学奥赛一本通-T1373)
[题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...
- 堆——鱼塘钓鱼:简直爽!
我人生中的第一篇博客:想想还有点小激动呢! 鱼塘钓鱼(fishing) [问题描述] 有N个鱼塘排成一排(N<100),在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8 ...
- 鱼塘钓鱼 优先队列 多路归并排序 贪心
鱼塘钓鱼 优先队列 多路归并排序 贪心 优先队列介绍 贪心思想:不会回头 解题思想:枚举0-N-1目的地鱼塘k, 如图 从上到下 选t(钓鱼的时间)个数,使和最大 #include<iostre ...
- 【一本通评测 1371】【堆】看病
看病 题目 解题思路 Code 一本通评测 1371:看病 题目 [题目描述] 有个朋友在医院工作,想请BSNY帮忙做个登记系统.具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空 ...
- 1042 Gone Fishing[DP/贪心]:钓鱼问题+易错数据集
题目大意 题目链接 去钓鱼,有n条湖按顺序排列,每条湖初始鱼量为fi,钓一个时间片就减少di条鱼,最小减到0条鱼,每条湖间的行走时间为ti个时间片(一个时间片为5分钟),给定时间h小时(一个小时12个 ...
最新文章
- Transformer 眼中世界 Vs. CNN 眼中世界
- httpd服务器常见漏洞修复,网站安全监测以及漏洞修复过程
- JAVA实现调整数组顺序使奇数位于偶数前面问题(《剑指 offer》)
- 在组策略中通过.zap的形式发布软件!
- 企业信息化的创新与出路
- html app的登陆、注册,登陆_注册.html
- 用Unity3D实现简单的牧师与魔鬼游戏(动作分离版)
- SeaweedFS在.net core下的实践方案
- oracle导入1542错误,Oracle 12c:ORA-28040 ORA-01017
- python强制释放内存_强制Python释放对象以释放内存
- 禁用“微软 Windows 10 易升”
- 装饰器只有python才有吗_Python装饰器入门详解
- 关于微信小程序web开发者工具模拟器出现空白问题
- uniapp基础开发模板
- WIN7封装教程2018系列(六)—封装
- oracle 分区表,分区索引
- Activiti6:模拟钉钉上面的请假流程(使用web画图并导出xml然后使用java执行流程)
- mcs51单片机嵌入式c语言习题,MCS-51单片机复习题参考题库.doc
- 详解mmap:是什么 为什么 怎么用
- Android组件间数据传递
热门文章
- css动画(图片触碰变大)
- php 输入 输出,php的文件输入输出流php://input
- Linux下创建符号链接(软链接)
- MYSQL修改密码版本5.7.29提示Unknown column ‘password‘ in ‘field list‘。
- 纯函数式编程语言_函数式编程正在接管具有纯视图的UI。
- 【OpenCV】9th-关于argc
- oracle planning bom,OracleERP表结构--BOM模块
- 交易员偏爱市场的理由
- cad视口缩放区域怎么使用_cad视口(cad布局和视口使用教程)
- 蝴蝶效应,青蛙现象,鳄鱼法则,鲇鱼效应,羊群效应,刺猬法则,手表定律,破窗理论,二八定律,木桶理论,马太效应,这些你都明白吗