前言
我真的是愚不可及,为什么学这个东西,我本身又不强,而这个东西不但特别难,而且还特别冷门,我真的是白瞎了这么多时间了,现在我把我的辛苦展现出来,给各位强者铺个道路。
四边形不等式
(以下所有的自变量的讨论均在整数范围内,设w(a,b)为关于a,b的二元函数)
定义
若二元函数满足当(aleq bleq cleq d,)有(w(a,d)+w(b,c)geq w(a,c)+w(b,d)),则称二元函数满足四变形不等式。
四边形不等式判定定理
若(a< b,w(a,b+1)+w(a+1,b)geq w(a,b)+w(a+1,b+1)),则二元函数w满足四变形不等式。
证明:
对于(a<c),一定有
(w(a,c+1)+w(a+1,c)geq w(a,c)+w(a+1,c+1))
假设(a+k<c),会有
(w(a+k,c+1)+w(a+k+1,c)geq w(a+k,c)+w(a+k+1,c+1))
同理(a+k+1<c),有
(w(a+k+1,c+1)+w(a+k+2,c)geq w(a+k+1,c)+w(a+k+2,c+1))
两式相加有
(w(a+k,c+1)+w(a+k+2,c)geq w(a+k,c)+w(a+k+2,c+1))
于是由数学归纳法,加之a,b可以取等号,有
(aleq bleq c,w(a,c+1)+w(b,c)geq w(a,c)+w(b,c+1))
同理,对于
(aleq b< c+k),有
(w(a,c+k+1)+w(b,c+k)geq w(a,c+k)+w(b,c+k+1))
至于(aleq b< c+k+1)
(w(a,c+k+2)+w(b,c+k+1)geq w(a,c+k+1)+w(b,c+k+2))
两式相加有
(w(a,c+k+2)+w(b,c+k)leq w(a,c+k)+w(b,c+k+2))
由数学归纳法,加之c,d可以取等号,有
(aleq bleq cleq d,w(a,d)+w(b,c)leq w(a,c)+w(b,d))
得证
推论:
- 对于(b-aleq l)满足判定定理要求,那么对于(aleq bleq cleq d),当(d-aleq l+1)时满足四边形不等式,根据证明来证明。
- 判定定理的逆定理:满足四边形不等式的二元函数满足(a<b,w(a+1,b)+w(a,b+1)geq w(a,b)+w(a+1,b+1)),有兴趣可以自行证明。
一维线性递推优化
优化式
(f_i=min_{0leq j<i}{f_j+w(j,i)})
性质
一维线性递推决策递增定理
定义
方程(f_i=min_{0leq j<i}{f_j+w(j,i)})中(w)满足四边形不等式,则决策点单调递增
证明
设(k,k')为(f_i)的决策点并满足条件(0leq k'<k<i<i'),其中k为i的最优决策点
不难得知
(f_i=f_k+w(k,i)leq f_{k'}+w(k',i))
由四边形不等式得知
(w(k',i')+w(k,i)geq w(k',i)+w(k,i'))
两式相加有
(f_k+w(k,i')leq f_{k'}+w(k',i'))
于是易知决策点(k)比(k')更优,故得证。
推论:如果一个决策点a比它之前的一个决策点b优秀,则决策点b不可能成为以后的最优决策点(二分依据)。
实现
目前要求(f_i)
- 单调队列维护三元组((l,r,p)),表示(f_{l-r})的最优决策点目前最优是p
- 队头是否合法,即(l< r),否则弹出
- 取队头l++,计算(f_l)最优解
- 从队尾向前枚举,如果计算(f_k)(k为队尾的l)的已有决策点不如现在的决策点l优秀,弹出
- 否则二分查找(l-r)中第一个可以让决策点i更优秀的位置
- 更改队尾r,把新的三元组代表i的决策加入队列(注意,如果不能加入,一定要剔除)
二维递推优化
优化式
- (f[l][r]=min_{lleq k<r}{f[l][k]+f[k+1][r]+w[l][r]})(区间递推)
- (f[i][j]=min_{i-1leq k<j}{f[i-1][k]+w[k+1][j]})(序列划分)
包含单调
如果二元函数w满足(aleq bleq cleq d,w(a,d)geq w(b,c)),则称二元函数w满足包含单调。
二维递推判定定理
定义
对于上述优化式,如果满足
- 二元函数w满足四边形不等式
- 二元函数w满足包含单调
- 边界(w(i,i)=f[i][i]=0)
则f满足四边形不等式。
证明
优化式1
对于(j-i=1)而言,显然有(f[i][j]=f[i][i]+f[j][j]+w[i][j])
根据判定定理来证明,(i<j),要证明(f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
而(f[i][j+1]+f[i+1][j]=f[i][j+1])
- (f[i][j+1])最优决策点在i
那么有(f[i][j+1]=f[i][i]+f[i+1][j+1]+w[i][j+1]=f[i+1][j+1]+w[i][j+1]geq w[i][j]+f[i+1][j+1])
(=f[i][j]+f[i+1][j+1]),即(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])。
- (f[i][j+1])最优决策点在i+1
那么有(f[i][j+1]=f[i][i+1]+f[i+1][j]+w[i][j+1]=f[i][j]+w[i][j+1]geq f[i][j]+w[i+1][j+1]=)
(f[i][j]+f[i+1][j+1]),即(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])。
总上所素,j-i=1时满足四边形不等式
至于(j-i=l),假设(j-i<l)满足四边形不等式,则要证
(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
不妨设(f[i][j+1])最优决策点为x,(f[i+1][j])最优决策点为y
- (xleq y)
而(f[i][j+1]+f[i+1][j]=f[i][x]+f[x+1][j+1]+w[i][j+1]+f[i+1][y]+f[y+1][j]+w[i+1][j])
而(f[i][j]+f[i+1][j+1]leq f[i][x]+f[x+1][j]+w[i][j]+f[i+1][y]+f[y+1][j+1]+w[i+1][j+1])
显然我们有(i<j,w[i][j+1]+w[i+1][j]geq w[i][j]+w[i+1][j+1])
显然(x+1leq y+1leq j<j+1),因此我们有
(f[x+1][j+1]+f[y+1][j]geq f[x+1][j]+f[y+1][j+1])
于是不难得知(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
- x>y
同理
(f[i][j+1]+f[i+1][j]=f[i][x]+f[x+1][j+1]+w[i][j+1]+f[i+1][y]+f[y+1][j]+w[i+1][j])
(f[i][j]+f[i+1][j+1]leq f[i][y]+f[y+1][j]+w[i][j]+f[i+1][x]+f[x+1][j+1]+w[i+1][j+1])
显然有(i<j,w[i][j+1]+w[i+1][j]geq w[i][j]+w[i+1][j+1])
(i<i+1leq y<x,f[i][x]+f[i+1][y]geq f[i][y]+f[i+1][x])
因此(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
总上所素,根据数学归纳法易知(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1]),又有四边形不等式判定定理容易知道,f满足四边形不等式。
优化式2
对于(j-i=0)
现在需要证明(f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1]),
即证(f[i][i+1]+f[i+1][i]geq f[i][i]+f[i+1][i+1])
即(f[i][i+1]+f[i+1][i]geq 0),不妨将非法决策定义为0,于是即证(f[i][i+1]geq 0),显然成立
至于(j-i=l),假设(j-i<l)满足四边形不等式,那么要证
(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
设(f[i][j+1])最优决策点为x,(f[i+1][j])最优决策点为y
易知(f[i][j+1]+f[i+1][j]=f[i-1][x]+w[x+1][j+1]+f[i][y]+w[y+1][j])
- (xleq yRightarrow i-1leq xleq y<j)
显然(f[i][j]+f[i+1][j+1]leq f[i-1][x]+w[x+1][j]+f[i][y]+w[y+1][j+1])
而(x+1<y+1leq j<j+1,w[x+1][j+1]+w[y+1][j]geq w[x+1][j]+w[y+1][j+1])
故(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
- (x> yRightarrow ileq y< xleq j)
显然(f[i][j]+f[i+1][j+1]leq f[i-1][y]+w[y+1][j]+f[i][x]+w[x+1][j+1])
而(i-1<ileq y<x,f[i-1][x]+f[i][y]geq f[i-1][y]+f[i][x])
故(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])
所以由数学归纳法(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1]),结合四边形不等式判定定理,不难得知原命题成立。
二维递推决策递增定理
定义
若上诉优化式满足判定定理,设(p[i][j])为(f[i][j])的最优决策点,则有(p[l][r-1]leq p[l][r]leq p[l+1][r])
证明
优化式1
- (p[l][r-1]leq p[l][r])
设左式最优决策点(k),并设(lleq k'<k<r-1),所以我们有
$f[l][r-1]=f[l][k]+f[k+1][r-1]+w[l][r-1]leq $
(f[l][k']+f[k'+1][r-1]+w[l][r-1])
即(f[l][k]+f[k+1][r-1]leq f[l][k']+f[k'+1][r-1].....1)
由四边形不等式有
(l< k'+1<k+1leq r-1<r)
(f[k'+1][r]+f[k+1][r-1]geq f[k'+1][r-1]+f[k+1][r].....2)
1,2式相加,有
(f[l][k]+f[k+1][r]leq f[l][k']+f[k'+1][r])
即
(f[l][k]+f[k+1][r]+w[l][r]leq f[l][k']+f[k'+1][r]+w[l][r])
所以易知决策点k比(k')优秀,得证
- (p[l][r]leq p[l+1][r])
设右式的最优决策点为(k),设(lleq k<k'<r)
显然(l<l+1leq k<k',f[l][k']+f[l+1][k]geq f[l][k]+f[l+1][k'] ......1)
而(f[l+1][r]=f[l+1][k]+f[k+1][r]+w[l+1][r]leq f[l+1][k']+f[k'+1][r]+w[l+1][r])
即(f[l+1][k]+f[k+1][r]leq f[l+1][k']+f[k'+1][r] ......2)
1式+2式我们有
(f[l][k']+f[k'+1][r]geq f[l][k]+f[k+1][r]),即
(f[l][k']+f[k'+1][r]+w[l][r]geq f[l][k]+f[k+1][r]+w[l][r])
- 总上所素,有(p[l][r-1]leq p[l][r]leq p[l+1][r])。
优化式2
- (p[l][r-1]leq p[l][r])
设(l-1leq k'<k=p[l][r-1]<r-1)
易知(f[l][r-1]=f[l-1][k]+w[k+1][r-1]leq f[l-1][k']+w[k'+1][r-1])
由四边形不等式有(k'+1<k+1leq r-1<r,w[k'+1][r-1]+w[k+1][r]leq w[k+1][r-1]+w[k'+1][r])
两式相加(f[l-1][k]+w[k+1][r]leq f[l-1][k']+w[k'+1][r]),易知决策点k比(k')更优秀
- (p[l][r]leq p[l+1][r])
设(lleq k=p[l+1][r]<k'<r),容易知道
(f[l+1][r]=f[l][k]+w[k+1][r]leq f[l][k']+w[k'+1][r])
由四边形不等式有(l-1<lleq k<k',f[l][k']+f[l-1][k]leq f[l][k]+f[l-1][k'])
两式相加(f[l-1][k]+w[k+1][r]leq f[l-1][k']+w[k'+1][r]),容易知道决策点(k)比(k')更优秀
- 总上所素(p[l][r-1]leq p[l][r]leq p[l+1][r])。
时间复杂度
根据二维递推决策递增定理,我们知道时间复杂度应该为(O(sum_{i=2}^nsum_{l=1}^{n-i+1}(p[l+1][l+i-1]-p[l][l+i-2]+1))=)
(O(sum_{i=2}^n(p[2][i]+p[3][i+1]+...+p[n-i+2][n])-(p[1][i-1]+p[2][i]+...+p[n-i+1][n-1])+n-i+1)))
(=O(sum_{i=2}^n(p[n-i+2][n]-p[1][i-1]+n-i+1))approx O(n^2))
石子合并
问题
有n堆石子从左至右排成一排,第i堆石子重量(w[i]),每次可以选择相邻的两堆石子合并,新的石子重量为原来两堆之和,消耗体力值为新的石子的重量,询问最少消耗的体力之和。
解
首先注意到这是区间问题,于是可以设(f[l][r])表示合并第l堆石子到第r堆石子消耗的最少体力值,于是有(f[l][r]=min_{k=l}^{r-1}{f[l][k]+f[k+1][r]+w[l][r]}),时间复杂度(O(n^3))。
考虑到区间递推可以四边形不等式优化,发现w满足四边形不等式,且取到等号,也满足包含递增关系,边界可以开为0,因此可以使用四边形不等式优化成(O(n^2))。
梳理:4大定理三个推论
定理名称 | 式子 | 条件 | 结果 |
---|---|---|---|
四边形不等式判定定理(2个推论) | (w(a,b+1)+w(a+1,b)geq w(a,b)+w(a+1,b+1)) | a<b | w满足四边形不等式 |
一维线性递推决策递增定理(1个推论) | (f_i=min_{j=0}^{i-1}{f_j+w(i,j)}) | w满足四边形不等式 | f的最优决策点单调递增 |
二维递推判定定理 | (egin{cases}f[l][r]=min_{k=l}^{r-1}{f[l][k]+f[k+1][r]+w[l][r]}\f[i][j]=min_{i-1leq k<j}{f[i-1][k]+w[k+1][j]}end{cases}) | w满足四边形不等式,包含递增,(w[i][i]=f[i][i]=0) | f满足四边形不等式 |
二维递推决策递增定理 | (egin{cases}f[l][r]=min_{k=l}^{r-1}{f[l][k]+f[k+1][r]+w[l][r]}\f[i][j]=min_{i-1leq k<j}{f[i-1][k]+w[k+1][j]}end{cases}) | 优化式满足判定定理 | 最优决策点(p[l][r-1]leq p[l][r] leq p[l+1][r]) |
式子积累
-
(f(x)=|x+c|^p-|x|^p)单调递增,[NOI2009]诗人小G
-
(w(l,r))表示序列l,r中元素到其中位数的距离之和的最小值,满足四边形不等式和包含递增,Post Office
-
(w(l,r)=s_r-s_l)(s表示序列前缀和),满足四边形不等式且取到等号和包含递增。(石子合并)
例题
神仙
有n座山,第i座山坐标(x_i),定义(A[i][j])表示在前j座山修i间房子每座山到房子的距离之和的最小值,现在有两个神仙玩起了石子合并,有n堆石子,第i堆石子质量(a_i),定义合并两堆石子的代价为两堆石子质量之和+(A[l][r])(l,r为合并后的石子最小的编号和最大的编号),求合并成一堆石子最小的代价,(nleq 3000)。
后记
我想,当强者你看完这一切,觉得这些东西十分简单,而我的前言中又说这个东西很难,那么你大概知道了我的命运了,君当益AK,吾独AFO。