四边形不等式

四边形不等式用于区间\(dp\),对于\(dp\)方程(注意如果额外代价和\(k\)有关好像是不行的...):

\[dp_{i,j}=\min_{k=i}^{j-1}\{dp_{i,k}+dp_{k+1,j}\}+w_{i,j} \]

如果\(\forall a<b \leq c<d\),都有\(w_{a,c}+w_{b,d}\leq w_{b,c}+w_{a,d}\),那么就可以用四边形不等式把复杂度从\(O(n^3)\)优化到\(O(n^2)\)

具体操作是:对于\(\forall i,j\),设\(pos_{i,j}\)是使\(dp_{i,j}\)取到最优值的\(k\),则有\(pos_{i,j-1} \leq pos_{i,j} \leq pos_{i+1,j}\)。然后在这个范围内暴力循环\(k\),是\(O(n^2)\)的。

真正做题的时候可以先暴力区间\(dp\),然后发现它是满足上述单调性的就好了。

证明待填坑。

posted @ 2018-09-12 15:06  Mr_Spade  阅读(256)  评论(0编辑  收藏  举报