题意:起点为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单调队列优化相关推荐

  1. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP

    传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...

  2. 【洛谷 P1638】 【单调队列】 逛画展

    [洛谷 P1638] [单调队列] 逛画展 题目 解题思路 先求出最前面囊括所有画的位置 然后如果左边界的画不止存在一次,左边界右移 不断扩展右边界,求取答案 代码 #include<iostr ...

  3. AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)

    AcWing 1089 烽火传递 单调队列优化DP,思路比较简单,维护一个保持元素单调递增的单调队列,队首就是第i座烽火台能接收到的,代价最小的方案,加上第i座烽火台的代价就是这座烽火台的最小值 #i ...

  4. Codeforces 1077F2 Pictures with Kittens (hard version)(DP+单调队列优化)

    题目链接:Pictures with Kittens (hard version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:数据量5000, ...

  5. 【洛谷】【动态规划+单调队列】P1725 琪露诺

    [题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ...

  6. 洛谷 - P1886 滑动窗口(单调队列/线段树)

    题目链接:点击查看 题目大意:给出一个由n个数构成的序列,再给出一个长度为k的窗口,这个窗口从第一个下标开始一直向后移动,每次移动一个单位,每次移动询问一次该窗口中的最大值和最小值,最后输出答案 题目 ...

  7. [luogu 4292][bzoj 1758][WC2010] 重建计划(点分治 + dp + 单调队列优化 + 启发式合并)

    [WC2010]重建计划 problem solution code problem 洛谷指路 solution 一看那个道路平均价值的式子:AvgValue=∑e∈Sv(e)∣S∣\text{Avg ...

  8. bzoj5185 [Usaco2018 Jan]Lifeguards(dp+单调队列优化)

    真是太神了orz 我们先贪心地把被包含的线段删掉,把剩下的线段按左端点排序,这样的话右端点显然也是有序的. 设dp[i][k],表示前i个线段,删了k个,且必须保留i线段的最大覆盖长度.枚举上一个线段 ...

  9. [NOI2005]瑰丽华尔兹(DP+单调队列优化)

    题目来源:https://www.lydsy.com/JudgeOnline/problem.php?id=1499 Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有 ...

  10. 洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)

    题目链接:点击查看 题目大意:给出一个由n个数组成的序列,求长度不超过m的连续子段和中的最大值 题目分析:因为给出了一个限制条件,所以这就不能当普通的动态规划来做了,我们可以跑一遍前缀和,然后枚举每一 ...

最新文章

  1. 自己架设windows升级服务器
  2. python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...
  3. 研发过程管理导图-第一稿(转)
  4. wpf Visibility 动画
  5. git关联远程仓库和删除远程仓库
  6. php中间件怎么使用,laravel框架中间件简单使用方法示例
  7. python123测验2答案八边形_Python试卷
  8. Java volatile关键字
  9. C#传递参数调用exe程序
  10. Oracle数据库的状态查询
  11. 重启用reboot后起不来_2021年中国“天眼”开放,美媒记者探访后感叹了……
  12. 剑指offer.删除链表中重复的节点
  13. python 3.6.5 shell_linux安装python3.6.5
  14. 电力仿真需要学的软件?5款有实力的电力仿真软件
  15. 【积】有向图中的louvain社区检测(二)
  16. 手机如何登录企业邮箱,公司电子邮箱登录页面
  17. Spring Data JPA进阶(三):Specification查询
  18. 并发——锁升级(偏向锁,轻量级锁,重量级锁,及常见锁)
  19. junit关于Test class can only have one constructor的报错
  20. js 函数传参实参包含路径“\”处理

热门文章

  1. Yii 多表关联relations,需要与with()方法联合使用
  2. 05、应用程序数据操作(下)
  3. proxool数据库连接池使用方法
  4. 你必须知道的Nginx常用基本命令
  5. 滚轮事件的防冒泡、阻止默认行为
  6. 经典排序算法(二十一)--Cycle Sort
  7. 八 理解各种不同含义的new和delete
  8. 1个app的完整测试用例_同你分享1个完整的聚类分析案例
  9. python字符串操作方法_python字符串常用操作方法
  10. 数据结构——>二叉树