疯狂学习——DP!
斜率优化
P3648 [APIO2014] 序列分割
可以观察到切的顺序无关,则有
则
决策单调性:分治
P4360 [CEOI2004] 锯木厂选址
预处理
枚举第二个锯木厂的位置,设
CF833B The Bakery
显然具有决策单调性,使用「贡献难算」的技巧做到
P5574 [CmdOI2019] 任务分配问题
「贡献难算」+树状数组做到
CF1603D Artistic Partition
第一反应就是 DP,但是注意到
对于
记
可以证明其满足四边形不等式。整除分块可以做到
但如果使用「贡献难算」的技巧,左端点移动时只需增加
决策单调性:二分队列
二分队列用来解决满足决策单调性,转移时的贡献能
具体的,建立一个储存三元组的队列
- 先判断队首三元组是否过时,若
则弹出队首,否则将 赋值为 。 - 加入决策,如果
相比于队尾的 转移到 更优,根据决策单调性则 就完全无用。重复这样操作。 - 取出队尾的三元组
,我们要二分出一个位置 ,使得 以前的位置从 转移更优, 及其以后的位置从 转移更优。注意二分位置从 到 ,若 那么先将队尾的 改为 ,再将 压入队列。
P1912 [NOI2009] 诗人小G
转移方程形如
P3515 [POI2011] Lightning Conductor
就是对于每个
决策单调性:二分栈
二分栈用来解决满足如下的决策单调性的 DP 问题:每个决策点
用栈维护决策点,设现在栈顶的两个决策点分别是
当然每次转移前要不断二分出次栈顶反超栈顶的时间,如果小于
P5504 [JSOI2011] 柠檬
设
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!