数据结构优化DP
有些时候状态转移的时候一堆候选决策不知道怎么办?
使用循环?会T飞的!
维护决策单调性?会出错的!
倍增/状压?离正解远了!
剩下的只有这一个优化方式了:
数据结构优化DP
有些决策暴力查询复杂度很炸,不过放到数据结构题就是板子
这个时候,我们就可以写一个数据结构,查询决策就相当于查询
这样的话查询决策的开销就可以降低了!
来几个题?
AHOI2006 基因匹配
这个题60部分分给到的是
考虑优化一下下:
这里给到的每个数出现5次是关键特殊性质,
记录每个
在b中,状态转移方程就变成了:
这里就可以用维护区间最值的数据结构维护了
特殊性质:
直接压到
USACO Cleaning Shifts
线段覆盖问题上数据结构优化
状态转移方程:
快速维护
线段树维护区间最值
NOI1998 免费馅饼
加强版
状态转移方程很好列:
但是暴力转移是
考虑优化
状态干不动,决策干不动,转移条件?
拆成一个不等式组
然后按第一个式子升序,第二个开树状数组维护就行了
独特序列
就是树状数组维护前缀和这种东西
首先推个计数方程
首先就是把所有的序列都在后边插上一个
然后会发现,就是在上一个
于是我们上树状数组维护前缀和
考虑修改
我们需要把这个位置减掉(它的前缀和减掉它前面的前缀和)
这样在扣掉
然后只是扣掉了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具