ssl2331OJ1373-鱼塘钓鱼 之3【dp】
前言
上篇:
纯贪心做法
堆优化贪心
题目:OJ1373
正题
有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头)。求限定时间内最多能够钓到的鱼数
解题思路
用f[i][j]表示在第i个鱼塘第j分钟时最多能钓到的鱼数。然后推出递推方程
f[i][j]=max(f[i-1][j-k-t[i-1]]+s)
j-k-t[i]表示去除路程后在当前鱼塘钓k分钟,然后枚举一下k,s表示在当前鱼塘钓k分钟能得到的余数
时间复杂度:O(n*m^2)
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int lt,num[101],t[101],mov[101],sum,n,m,s[101],r;
int f[101][1001];
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",&mov[i]);for (int i=1;i<n;i++) scanf("%d",&t[i]);scanf("%d",&m);//输入memset(f,-1,sizeof(f));//初始化f[0][0]=0;//初始化,toofor (int i=1;i<=n;i++){f[i][0]=0;//依旧是初始化r=0;s[0]=0;//仍然是初始化while (lt+r<=m && num[i]>0){r++;s[r]=s[r-1]+num[i];num[i]-=mov[i];}//计算待到几分钟的钓鱼数(其实可以用公式求)for (int j=1;j<=m;j++){for (int k=0;k<=j-lt;k++){if (j-k-lt<0) break;//退出循环if (f[i-1][j-k-t[i-1]]!=-1)f[i][j]=max(f[i][j],f[i-1][j-k-t[i-1]]+s[min(k,r)]);//动态转移}sum=max(sum,f[i][j]);//更新最优解}lt+=t[i];//提前计算路程}printf("%d",sum);//输出
}
ssl2331OJ1373-鱼塘钓鱼 之3【dp】相关推荐
- 信息学奥赛一本通 1373:鱼塘钓鱼(fishing)
[题目链接] ybt 1373:鱼塘钓鱼(fishing) [题目考点] 1. 动态规划:区间动规 2. 贪心 优先队列 [解题思路] 解法1:区间动规 该人只会从编号小的鱼塘走到编号大的鱼塘,不存在 ...
- 鱼塘钓鱼(信息学奥赛一本通-T1373)
[题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...
- 鱼塘钓鱼 优先队列 多路归并排序 贪心
鱼塘钓鱼 优先队列 多路归并排序 贪心 优先队列介绍 贪心思想:不会回头 解题思想:枚举0-N-1目的地鱼塘k, 如图 从上到下 选t(钓鱼的时间)个数,使和最大 #include<iostre ...
- 1373:鱼塘钓鱼(fishing)——优先队列+贪心
[题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,--,第5分钟以后再 ...
- 【一本通评测 1373】【堆】【贪心】鱼塘钓鱼
鱼塘钓鱼 题目 解题思路 Code 一本通评测 1373:鱼塘钓鱼(fishing) 题目 [题目描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 鱼 ...
- SSL 2331 洛谷 1717 信息学奥赛一本通 1373 鱼塘钓鱼#贪心#
动态规划 温馨提示:交洛谷请在总时间*12并调整输入格式. 题目 设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼. 分析 首先是贪心,最后在第i个鱼塘钓鱼的话,那么路上的时间是固定的,所以也可 ...
- 【c++一本通】【堆】鱼塘钓鱼
[c++一本通][堆]鱼塘钓鱼 题目 解题思路 枚举去到的最远的鱼塘 减去花费在路程上的时间,剩下的就是用来钓鱼的时间 将能到达的鱼塘初始的鱼,加入堆 然后取出堆顶,加入其下一次钓到的鱼的数量 直到时 ...
- 堆——鱼塘钓鱼:简直爽!
我人生中的第一篇博客:想想还有点小激动呢! 鱼塘钓鱼(fishing) [问题描述] 有N个鱼塘排成一排(N<100),在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8 ...
- 鱼塘钓鱼 贪心算法
问题描述 约翰有h(1≤h≤16)个小时的时间,在该地区有n(2≤n≤25)个湖,这些湖刚好分布在一条路线上,该路线是单向的.约翰从湖1出发,他可以在任一个湖结束钓鱼.但他只能从一个湖到达另一个与之相 ...
- java买房子钓鱼,AcWing 1262. 鱼塘钓鱼(Java 贪心 Or 优先队列)
算法1 贪心 先考虑最远到哪个鱼塘,把路上的时间预先减掉,剩下的就是完全用于钓鱼的时间注意这里不用考虑折返的情况,因为如果折返前一个池塘钓鱼可以得到更优解,那么完全可以在之前就接着钓 因为一分钟计算一 ...
最新文章
- linux .lz进程,LLinux常用命令(二)
- Kingbase和PostgreSQL中如何查看当前连接的进程信息
- 数据结构读书笔记(三)(C语言)
- IOS15 SVProgressHUD 报UIWindow 无法识别错误
- 线程故事:Web应用程序中的ThreadLocal
- stm32 ucosii消息队列 串口_STM32F1的UART4串口配置
- idea messages中文乱码_2019.2版本IDEA控制台中文乱码尝试了很多方法都不行
- excel怎么并排查看两个工作表
- 使用generator自动生成mybatis model、mapper.xml、mapper等(转)
- 各种格式ANSI,UTF8,Unicode,Unicode BigEndian的解释
- 解决Win10/Win11输入法卡顿问题
- 不到最后一刻,绝不放弃!
- 蓝桥杯 ALGO-1003 礼物
- 主流的巡店系统有哪些?哪个品牌比较好
- 【PPT】跨境电商的N个知识点普及
- 通过STM32 stlink utility工具对ST-LINK芯片信息进行读取和升级以及SWD烧录媒介
- Openstack-T 之Neutron
- java png背景变黑,Android png透明图片转jpg时背景变黑的解决方法
- PHP八字强弱计算,八字强弱自动计算,在线测试生辰八字强弱
- matlab方程近似求根,第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令.doc...
热门文章
- vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...
- 5gh掌上云计算认证不通过_【众志成城战疫情】法官助理告诉你“移动微法院”、“掌上法庭”有多便捷、有多硬核~!...
- 跨部门不配合工作_跨部门协作,队友总是“甩锅”,这三个方法教你快速避坑!...
- 中断原理在计算机中的应用,最新 计算机原理与应用 复习3-判断题
- 通过图书编号查询python_文字版图书管理-python练习
- sql 日期和当前日期时间差_详解PostgreSQL 如何获取当前日期时间
- leetcode199. 二叉树的右视图(层序遍历03)
- [JavaWeb-MySQL]MySQL服务启动和关闭
- [汇编语言]实验二:字的传送
- Java多线程(review)