今日も、明日も、輝いている。|

Aquizahv

园龄:1年11个月粉丝:0关注:7

2024-11-18 14:38阅读: 209评论: 0推荐: 0

【学习笔记】线段树优化DP

dp,即动态规划中有一类很重要的优化,叫做线段树优化。本文将介绍几种常见的类型及其套路和一些例题。

前置知识:线性 dp、线段树。

被 NOIP2023 暴打之后爬来补 dp 了。

定义

为了方便理解,先声明一下本博客中的如下定义(可能有误,所以仅限于本博客,可能不能作为参考):

  • 当前:包括本轮待计算的 dp 值和遍历到的信息。
  • 决策(jc):即更新 dp 值,可以理解为转移。
  • 决策点:即某个 dp 值的转移处。(如 dpi 可以从 dpj+x 转移,且 dpj+x 为它最终取到的(即最优的)值,那么称 j 为决策点)
  • 决策值:即某个 dp 值的转移值。

以最长上升子序列为例。

假设本轮要计算 dpi。那么 dpi当前的 dp 值,ai当前的信息。

dpi 可以取 dpj+1(此时 aj<ai),那么称 j决策点,称 dpj+1决策值

我把线段树优化 dp 决策分为「静态修改」和「动态修改」,这样分类是因为思考方式不同:前者通常可以从状态转移式子中容易的分离出决策点的贡献,而后者更多的是从当前的信息变化推出会对线段树上的决策值有何影响。

上面这段是对两种题型的总结,在做题之前看不懂很正常,我也很难描述。通过解决一些例题再回来看,自然就会明白了。

静态修改

即在线段树上的唯一修改是把某个转移完毕的 dp 状态丢到线段树上。此时后面的 dp 转移快速查询最优决策时,贡献的部分可以拆为 当前的贡献 和 决策点的贡献 ,且「决策点」部分贡献恒定不变,因此不用做修改。

CF1304F Animal Observation

Easy version

Hard version

等等,这不是能单调队列么?

但是我们的专题是线段树优化 dp(doge)

权值线段树优化 dp

此类题目的 dp 转移通常和数值的大小关系有关,以下将介绍几道权值线段树优化 DP 题。

CF597C Subsequences

给定一个 1n 的排列 a,求 a 中长度为 m+1 的上升子序列个数(IS)。
1n1050m101ain,答案不超过 8×1018

首先设计 dp,dpi,k 表示以第 i 位为结尾,构成长度为 k 的 IS 的个数。

转移有

dpi,k=j=0i1dpj,k1(aj<ai)

如果没有 aj<ai 的限制,显然可以前缀和优化。那有了这个限制之后,是不是可以写成:

dpi,k=l=1ai1j=0i1dpj,k1(aj=l)

如果令 si,k,x 表示 j=0i1dpj,k(aj=x),那么有:

dpi,k=l=1ai1si,k1,l

这时候就看的很清楚了,可以把 si,k1,l 丢到线段树上的第 l 位。枚举 k,那么 dpi,k 就是查线段树上 l[1,ai1]si,k1,l。当然,树状数组也是完全可以的。

时间复杂度 O(nklogn)

P3431 [POI2005] AUT-The Bus

(太简单所以懒得写)

CF474E Pillars

(太简单所以懒得写)

CF960F Pathwalks

首先这个东西显然和我们的 LIS 很像,于是考虑设 dpi 表示以第 i 条边为结尾的方案数。其次,我们需要满足两个条件:

  • 决策点的 v= 当前的 u
  • 决策点的 w< 当前的 w

没有第一个的话可以考虑开权值线段树维护。有了第一个的话,可以考虑开 n 棵线段树,那就要动态开点了。

时间复杂度 O(mlogmax{wi})。所以 wi 就完全可以 109 了。

动态修改

即要随着 dp 的进行来修改线段树上的决策值。此时 dp 转移方程通常有一个动态贡献,这个贡献会随着决策点的变化而变化。

这类题在初次遇到常常难以下手,不过只要会了「修改决策值」的思考方式,这种题就全都是套路不止于愣着不会做了。

另外,我是从 lsj2009博客里学习的这类套路,在此万分感谢!

(唔,下面的题解暂时没有补 qwq。可以先看看 lsj2009 的博客,看懂的话下面都会做了。)

CF833B The Bakery

P9871 [NOIP2023] 天天爱打卡

P1848 [USACO12OPEN] Bookshelf G

到这里的话,如果你已经理解了这种套路,类似的题可以直接根据套路秒掉。现在你可以试试把这道 USACO 的题秒掉。另外还有道一模一样(而且只有一个 hi)的 P1295 [TJOI2011] 书架

本文作者:Aquizahv's Blog

本文链接:https://www.cnblogs.com/aquizahv/p/18552581

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Aquizahv  阅读(209)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起