洛谷 P1725 简单DP单调队列优化
题意:起点为1,终点为n,每个点都有一个权值ai,每次只能从i走到[i+l, i+r],求能获得的最大权值
n <= 2e5
简单的dp,转移为dp[i] = max(dp[j]) + a[i],但是显然直接暴力会T
倒推,单调队列维护一下跑过的dp[i],更新前面的值
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<deque> 6 #define LL long long 7 #define debug(x) cout << "[" << x << "]" << endl 8 using namespace std; 9 10 const int mx = 2e5+10; 11 struct node{ 12 int a, id; 13 node(int a = 0, int id = 0): a(a), id(id){} 14 }; 15 deque<node> q; 16 int dp[mx], a[mx]; 17 18 int main(){ 19 int n, l, r; 20 scanf("%d%d%d", &n, &l, &r); 21 for (int i = 0; i <= n; i++) scanf("%d", &a[i]); 22 for (int i = n-l+1; i <= n; i++) dp[i] = a[i]; 23 for (int i = n+1; i >= l; i--){ 24 while (!q.empty() && dp[i] > q.back().a) q.pop_back(); 25 q.push_back(node(dp[i], i)); 26 dp[i-l] = q.front().a+a[i-l]; 27 if (i+r == q.front().id) q.pop_front(); 28 } 29 printf("%d\n", dp[0]); 30 return 0; 31 }
转载于:https://www.cnblogs.com/QAQorz/p/9535379.html
洛谷 P1725 简单DP单调队列优化相关推荐
- [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP
传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...
- 【洛谷 P1638】 【单调队列】 逛画展
[洛谷 P1638] [单调队列] 逛画展 题目 解题思路 先求出最前面囊括所有画的位置 然后如果左边界的画不止存在一次,左边界右移 不断扩展右边界,求取答案 代码 #include<iostr ...
- AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)
AcWing 1089 烽火传递 单调队列优化DP,思路比较简单,维护一个保持元素单调递增的单调队列,队首就是第i座烽火台能接收到的,代价最小的方案,加上第i座烽火台的代价就是这座烽火台的最小值 #i ...
- Codeforces 1077F2 Pictures with Kittens (hard version)(DP+单调队列优化)
题目链接:Pictures with Kittens (hard version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:数据量5000, ...
- 【洛谷】【动态规划+单调队列】P1725 琪露诺
[题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ...
- 洛谷 - P1886 滑动窗口(单调队列/线段树)
题目链接:点击查看 题目大意:给出一个由n个数构成的序列,再给出一个长度为k的窗口,这个窗口从第一个下标开始一直向后移动,每次移动一个单位,每次移动询问一次该窗口中的最大值和最小值,最后输出答案 题目 ...
- [luogu 4292][bzoj 1758][WC2010] 重建计划(点分治 + dp + 单调队列优化 + 启发式合并)
[WC2010]重建计划 problem solution code problem 洛谷指路 solution 一看那个道路平均价值的式子:AvgValue=∑e∈Sv(e)∣S∣\text{Avg ...
- bzoj5185 [Usaco2018 Jan]Lifeguards(dp+单调队列优化)
真是太神了orz 我们先贪心地把被包含的线段删掉,把剩下的线段按左端点排序,这样的话右端点显然也是有序的. 设dp[i][k],表示前i个线段,删了k个,且必须保留i线段的最大覆盖长度.枚举上一个线段 ...
- [NOI2005]瑰丽华尔兹(DP+单调队列优化)
题目来源:https://www.lydsy.com/JudgeOnline/problem.php?id=1499 Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有 ...
- 洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)
题目链接:点击查看 题目大意:给出一个由n个数组成的序列,求长度不超过m的连续子段和中的最大值 题目分析:因为给出了一个限制条件,所以这就不能当普通的动态规划来做了,我们可以跑一遍前缀和,然后枚举每一 ...
最新文章
- 自己架设windows升级服务器
- python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...
- 研发过程管理导图-第一稿(转)
- wpf Visibility 动画
- git关联远程仓库和删除远程仓库
- php中间件怎么使用,laravel框架中间件简单使用方法示例
- python123测验2答案八边形_Python试卷
- Java volatile关键字
- C#传递参数调用exe程序
- Oracle数据库的状态查询
- 重启用reboot后起不来_2021年中国“天眼”开放,美媒记者探访后感叹了……
- 剑指offer.删除链表中重复的节点
- python 3.6.5 shell_linux安装python3.6.5
- 电力仿真需要学的软件?5款有实力的电力仿真软件
- 【积】有向图中的louvain社区检测(二)
- 手机如何登录企业邮箱,公司电子邮箱登录页面
- Spring Data JPA进阶(三):Specification查询
- 并发——锁升级(偏向锁,轻量级锁,重量级锁,及常见锁)
- junit关于Test class can only have one constructor的报错
- js 函数传参实参包含路径“\”处理