四边形不等式优化DP

定义

1.原始定义

假设有一个二元函数 w ( x , y ) w(x,y) w(x,y),如果对于任意 a ≤ b ≤ c ≤ d a \leq b \leq c \leq d abcd,有

w ( a , d ) + w ( b , c ) ≥ w ( a , c ) + w ( b , d ) w(a, d) + w(b, c) \geq w(a, c) + w(b, d) w(a,d)+w(b,c)w(a,c)+w(b,d)

就说函数 w w w满足四边形不等式

2.等价定义

还有一个等价的定义:如果对于任意 a ≤ b a\leq b ab,有:

w ( a , b + 1 ) + w ( a + 1 , b ) ≥ w ( a , b ) + w ( a + 1 , b + 1 ) w(a, b + 1) + w(a + 1, b) \geq w(a, b) + w(a + 1, b + 1) w(a,b+1)+w(a+1,b)w(a,b)+w(a+1,b+1)

就说函数 w w w满足四边形不等式、

证明 2 -> 1

对于任意 a < c a < c a<c, 有 ( 1 ) (1) (1)式:

w ( a , c + 1 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 1 ) w(a, c + 1) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 1) w(a,c+1)+w(a+1,c)w(a,c)+w(a+1,c+1)

对于任意 a + 1 , c a+1, c a+1,c,有 ( 2 ) (2) (2)式:

w ( a + 1 , c + 1 ) + w ( a + 2 , c ) > = w ( a + 1 , c ) + w ( a + 2 , c + 1 ) w(a + 1, c + 1) + w(a + 2, c) >= w(a + 1, c) + w(a + 2, c + 1) w(a+1,c+1)+w(a+2,c)>=w(a+1,c)+w(a+2,c+1)

两式相加得到 ( 3 ) (3) (3)式:

w ( a , c + 1 ) + w ( a + 2 , c ) ≥ w ( a , c ) + w ( a + 2 , c + 1 ) w(a, c + 1) + w(a + 2, c) \geq w(a, c) + w(a + 2, c + 1) w(a,c+1)+w(a+2,c)w(a,c)+w(a+2,c+1)

对比 ( 1 ) (1) (1)式和 ( 3 ) (3) (3)式,发现 a + 1 a + 1 a+1可以扩成 a + 2 a + 2 a+2,同理 a + 2 a+2 a+2可以扩成 a + 3 a+3 a+3 a + 3 a+3 a+3可以扩成 a + 4 a+4 a+4……可以一直扩大直至 b ≤ c b\leq c bc b b b是在 a a a c c c之间的一个数),从而得到:

w ( a , c + 1 ) + w ( b , c ) ≥ w ( a , c ) + w ( b , c + 1 ) w(a, c + 1) + w(b, c) \geq w(a, c) + w(b, c + 1) w(a,c+1)+w(b,c)w(a,c)+w(b,c+1)

同理,对于任意 a < c + 1 a<c+1 a<c+1,有 ( 4 ) (4) (4)式:

w ( a , c + 2 ) + w ( a + 1 , c + 1 ) ≥ w ( a , c + 1 ) + w ( a + 1 , c + 2 ) w(a, c + 2) + w(a + 1, c + 1) \geq w(a, c + 1) + w(a + 1, c + 2) w(a,c+2)+w(a+1,c+1)w(a,c+1)+w(a+1,c+2)

( 1 ) (1) (1)式与 ( 4 ) (4) (4)式相加得到 ( 5 ) (5) (5)式:

w ( a , c + 2 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 2 ) w(a, c + 2) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 2) w(a,c+2)+w(a+1,c)w(a,c)+w(a+1,c+2)

( 1 ) (1) (1)式进行一下直观对比:

( 1 ) (1) (1)式: w ( a , c + 1 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 1 ) w(a, c + 1) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 1) w(a,c+1)+w(a+1,c)w(a,c)+w(a+1,c+1)

( 5 ) (5) (5)式: w ( a , c + 2 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 2 ) w(a, c + 2) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 2) w(a,c+2)+w(a+1,c)w(a,c)+w(a+1,c+2)

可以发现 c + 1 c+1 c+1可以扩成 c + 2 c+2 c+2,同理 c + 2 c+2 c+2可以扩成 c + 3 c+3 c+3 c + 3 c+3 c+3可以扩成 c + 4 c+4 c+4……可以一直扩大一直到 d ( c ≤ d ) d(c\leq d) d(cd),从而得到:

w ( a , d ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , d ) w(a,d) + w(a + 1, c) \geq w(a, c) + w(a + 1, d) w(a,d)+w(a+1,c)w(a,c)+w(a+1,d)

再把上式 a + 1 a+1 a+1扩大到 b b b,保证 a ≤ b ≤ c ≤ d a\leq b \leq c \leq d abcd,就可以得到 1 1 1,即

w ( a , d ) + w ( b , c ) ≥ w ( a , c ) + w ( b , d ) w(a,d) + w(b, c) \geq w(a, c) + w(b, d) w(a,d)+w(b,c)w(a,c)+w(b,d)

由此原始定义得证。

所以,证了这么久有啥用呢?

决策单调性

我们在做 D P DP DP时经常会遇见这样的 D P DP DP方程

d p [ i ] = min ⁡ / max ⁡ { d p [ j ] + c o s t ( j , i ) } dp[i] = \min/\max\{dp[j] + cost(j, i)\} dp[i]=min/max{dp[j]+cost(j,i)}

这样的 D P DP DP方程被称作 1 D / 1 D 1D/1D 1D/1D动态规划, c o s t ( i , j ) cost(i,j) cost(i,j)决定着优化策略选择

决策单调性定理

如果函数 c o s t ( i , j ) cost(i,j) cost(i,j)满足四边形不等式,则 d p [ i ] dp[i] dp[i]有决策单调性(充分条件)

证明:

注:假设此时已经满足四边形不等式

假设此时的 D P DP DP方程为 d p [ i ] = min ⁡ { d p [ j ] + c o s t ( j , i ) } dp[i] = \min\{dp[j] + cost(j, i)\} dp[i]=min{dp[j]+cost(j,i)} d p [ i ] dp[i] dp[i]的决策点是 p [ i ] p[i] p[i],对于 j < p [ i ] − 1 ( j < i ) j < p[i] - 1(j < i) j<p[i]1(j<i),根据最优性:

d p [ p [ i ] ] + c o s t ( p [ i ] , i ) ≤ d p [ j ] + c o s t ( j , i ) dp[p[i]] + cost(p[i], i) \leq dp[j] + cost(j, i) dp[p[i]]+cost(p[i],i)dp[j]+cost(j,i)

假设 i ′ > i i' > i i>i,此时 j ≤ p [ i ] ≤ i ≤ i ′ j \leq p[i] \leq i \leq i' jp[i]ii,根据四边形不等式:

c o s t ( j , i ′ ) + c o s t ( p [ i ] , i ) ≥ c o s t ( j , i ) + c o s t ( p [ i ] , i ′ ) cost(j, i') + cost(p[i], i) \geq cost(j, i) + cost(p[i], i') cost(j,i)+cost(p[i],i)cost(j,i)+cost(p[i],i)

对这个式子进行移项,得到

c o s t ( p [ i ] , i ′ ) − c o s t ( p [ i ] , i ) ≤ c o s t ( j , i ′ ) − c o s t ( j , i ) cost(p[i], i') - cost(p[i], i) \leq cost(j, i') - cost(j, i) cost(p[i],i)cost(p[i],i)cost(j,i)cost(j,i)

将此式和 D P DP DP式(根据最优性得出的式子)相加得:

d p [ p [ i ] ] + c o s t ( p [ i ] , i ′ ) ≤ d p [ j ] + c o s t ( j , i ′ ) dp[p[i]] + cost(p[i], i') \leq dp[j] + cost(j, i') dp[p[i]]+cost(p[i],i)dp[j]+cost(j,i)

由此可得,对于 i ′ i' i来说, p [ i ] p[i] p[i] j j j优,得证。

小小结

在上面的证明中我们可以知道,等价定义可以推出原始定义,而原始定义又可以推出决策单调性定理,其实在日常做题中,如果满足了等价定义,我们就可以直接用决策单调性来解决问题(就是说 2 2 2可以推出 1 1 1 1 1 1可以推出 3 3 3,那么 2 2 2可以推出 3 3 3

下面就来看一道例题吧

例题

链接:洛谷P3515 [POI2011]Lightning Conductor

题目很简洁,就是为了找这么一个数 p p p满足题目中给出的式子

那么我们不妨先移项,得到如下的式子

p ≥ a [ j ] − a [ i ] + ∣ i − j ∣ p\geq a[j] - a[i] + \sqrt{|i - j|} pa[j]a[i]+ij

而此时我们又要找到满足条件的最小的 p p p

所以此时的 p p p只要等于后面这个式子的最大值即可,即

p = max ⁡ ( a [ j ] − a [ i ] + ∣ i − j ∣ ) , 1 ≤ j ≤ n p = \max(a[j] - a[i] + \sqrt{|i - j|}), 1\leq j \leq n p=max(a[j]a[i]+ij ),1jn

先考虑一种比较好的情况,假设 j < i j<i j<i,那么绝对值就可以去掉了,即

p = max ⁡ ( a [ j ] + i − j ) − a [ i ] p = \max(a[j] + \sqrt{i - j}) - a[i] p=max(a[j]+ij )a[i]

上式中 max ⁡ \max max里的式子取到最大值,相当于负的这个式子取到最小值

所以我们可以定义 d p [ i ] = min ⁡ ( − a [ j ] − i − j ) dp[i] = \min(-a[j] - \sqrt{i - j}) dp[i]=min(a[j]ij )

为什么要用 min ⁡ \min min呢,因为在上面的证明中我们使用的都是 min ⁡ \min min,所以这里是用 min ⁡ \min min,如果是 max ⁡ \max max的话可以换成负数取个 min ⁡ \min min就好了,这是一样的,反正 d p [ i ] dp[i] dp[i]是自己定义的,定义成正负都一样

但是这样直接做是 n 2 n^2 n2的,这不能达到我们的要求,所以现在我们来进行优化

观察一下这个 D P DP DP方程的二元函数,那么此时的 w ( j , i ) w(j,i) w(j,i)就等于 − a [ j ] − i − j -a[j] - \sqrt{i - j} a[j]ij

为了进行优化,下一步我们证明一下这个 D P DP DP能不能满足决策单调性

求证: w ( j , i + 1 ) + w ( j + 1 , i ) ≥ w ( j , i ) + w ( j + 1 , i + 1 ) w(j, i+ 1) + w(j + 1, i) \geq w(j, i) + w(j + 1, i + 1) w(j,i+1)+w(j+1,i)w(j,i)+w(j+1,i+1)

证明:

把式子展开得

− a [ j ] − i + 1 − j − a [ j + 1 ] − i − j − 1 ≥ − a [ j ] − i − j − a [ j + 1 ] − i − j -a[j] - \sqrt{i + 1 - j} - a[j + 1] - \sqrt{i - j - 1} \geq -a[j] - \sqrt{i - j} - a[j + 1] - \sqrt{i - j} a[j]i+1j a[j+1]ij1 a[j]ij a[j+1]ij

发现可以去掉带有 a a a数组的部分,然后式子就变成了这样

− i + 1 − j − i − j − 1 ≥ − i − j − i − j -\sqrt{i + 1 - j} - \sqrt{i - j - 1} \geq -\sqrt{i - j} - \sqrt{i - j} i+1j ij1 ij ij

移一下项得

i − j − i − j − 1 ≥ i + 1 − j − i − j \sqrt{i - j} - \sqrt{i - j - 1} \geq \sqrt{i + 1 - j} - \sqrt{i - j} ij ij1 i+1j ij

x = i − j x = i - j x=ij,因为 i > j i > j i>j ,所以 x > 0 x>0 x>0,于是一开始那个繁琐的问题就变成了证明 x − x − 1 ≥ x + 1 − x \sqrt{x} - \sqrt{x - 1} \geq \sqrt{x + 1} - \sqrt{x} x x1 x+1 x

定义函数 f ( x ) = x − x − 1 f(x)=\sqrt{x} - \sqrt{x - 1} f(x)=x x1 ,问题又转化成了证明 f ( x ) ≥ f ( x + 1 ) f(x) \geq f(x + 1) f(x)f(x+1),那么就是要证明 f ( x ) f(x) f(x)是单调非递增的函数即可

懒得证单调性……自己搜吧 q w q qwq qwq

因为是个单调递减函数,所以证明成功

j > i j>i j>i时可以把序列翻转,得到的结果是一样的,做题的时候将序列翻转反向再做一遍上述操作即可,就不证明了

代码鸽了

总结

因为我很辣鸡,所以只能写这么一点点了 q w q qwq qwq

下面几个参考都可以去看一下,我大部分的思路全来自这里

另外给大家推荐几道题8

[NOI2009]诗人小G

决策单调性优化模板题,但是会卡精度

[NOI1995]石子合并

可以用四边形不等式优化来做,也有一些很 n p np np的做法

ACwing305. 一个古老的石头游戏

上面那道题的加强版

参考

OI-wiki

0225【四边形不等式优化DP】

【学习笔记】动态规划—各种 DP 优化

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值