二分队列+决策单调性优化dp:P6246

https://www.luogu.com.cn/problem/P6246

决策单调性

若 d p i dp_i dpi 由 j j j 转移,则 d p i + 1 dp_{i+1} dpi+1 转移点 k k k 满足 k ≥ j k\ge j k≥j

发现决策点满足单调,但遍历的点不满足单调,不能用双指针,考虑二分队列。

二分队列

假设前 i i i 个已定,只考虑从前转移到后,当前后面那一段必然会分成很多段,段与段直接的转移点必然是单调递增的。

后面的我们可以考虑用单调队列维护。

当加入新决策点 i + 1 i+1 i+1 时,必然是先pop掉尾部一些区间,然后再和当前最末尾的一个共享一个区间


找端点可以二分。

相关推荐
丶Darling.13 天前
Day41 | 动态规划 :完全背包应用 完全平方数&&单词拆分(类比爬楼梯)
算法·动态规划·dp·lambda·记忆化搜索·回溯·c++\
dengqingrui1232 个月前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
疯狂的小强呀2 个月前
超详细讲解:DP和DDP的区别以及使用方法
算法·dp·ddp
Jcqsunny2 个月前
[dp] 小信走迷宫
算法·前缀和·动态规划·dp
源代码•宸2 个月前
Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))
c++·算法·leetcode·职场和发展·dp
Qres8212 个月前
[SCOI2014] 方伯伯的玉米田(dp+树状数组维护行列)
数据结构·dp·ds
源代码•宸3 个月前
Leetcode—72. 编辑距离【中等】
c++·算法·leetcode·dp
WJX5743 个月前
最长公共子序列
dp
sweetheart7-73 个月前
LeetCode152. 乘积最大子数组(2024秋季每日一题 2)
数据结构·算法·动态规划·dp·每日一题
源代码•宸3 个月前
Leetcode—1143. 最长公共子序列【中等】
c++·经验分享·算法·leetcode·dp