day5

决策单调性

四边形不等式(交叉优于包含)在矩阵上看:取一个矩形 \(abdc\),若有 \(a+d\le b+c\),则矩阵每行每列最小值位置单调。

这样的矩阵叫做蒙日矩阵。

蒙日矩阵对于加乘运算封闭,因此可以用若干个小蒙日矩阵组成大的。

UOJ285

显然有 \(f_i=\min\limits_{j<i}{f_j+w(j,i)}\),对于 \(w(l,r)\),可以 用主席树讨论着做二维偏序

猜测 \(w(l,r)\) 满足四边形不等式,可以对 \(q=1\) 的情况讨论,若此时是蒙日矩阵,那么所有约束区间加起来仍然是蒙日矩阵。

二分栈就好。

ARC066F

代价的形式提醒我们按区间进行选择,\(f_i\gets f_{j-1}+\binom{i-j}{2}-(s_i-s_{j-1})\)

这个满足四边形不等式,但四边形不等式是个很下位的性质,事实上这个 dp 可以用斜率优化。

考虑询问如何处理,一个套路是设 \(f_i,g_i\) 分别是前后缀 \(i\) 个,那么可以拼起来表示出不选修改点的答案。

再求出 \(h_i\) 强制选 \(i\) 的全局答案,也可以对应算出修改点贡献的变化。

\(f,g\) 斜优,对于 \(h\) 考虑做分治即可。

无来源

显然每个商店从小往大买,排序后求前缀和,有转移 \(f(i,j)\gets f(i-1,k)+s(i,j-k)+a_i\)

\(a_i\) 合到 \(s(i,0)\) 上,并做一次 \(f(i,j)\gets f(i-1,j)\),仍然满足四边形不等式。

此时复杂度 \(\mathcal{O}(nk\lg k)\),考虑减少商店个数。

将商店按 \(s(i,1)\) 排序,显然前 \(k\) 个以外的商店不会只买一件。

剩下的部分按 \(s(i,2)\) 排序,显然前 \(k/2\) 个以外的商店不会只买不超过两件。

以此类推,可以取出 \(\mathcal{O}(k\lg k)\) 个商店,其余的都没用,于是复杂度 \(\mathcal{O}(k^2\lg^2k)\)

UOJ672

\(f(i,j)\) 为第 \(i\) 次操作后另一个点在 \(j\) 的答案。

因为没有结构,只能挖掘 \(dis(i,j)\) 的性质。

比较神奇的,因为原图是三角剖分,所以 \(\operatorname{distance}\) 可以满足一个类似四边形不等式的东西。

为啥是类似呢?因为这个东西它不仅能满足四边形不等式的式子,而且它是环形的满足,这就导致我们的决策单调性有一点问题。

盖了就好了,我们把 \([1,n]\) 复制到 \([n+1,2n]\),这样原本性质在环上成立,现在在链上也有决策单调性了。

那么直接做一个 \(f(i,j)\) 的朴素 dp 就好了,我们用 std::set 在蒙日阵上维护决策点对应的区间。

写法要查找单点和二分对应区间,比较古神,建议阅读代码。

理论查询次数看着很极限,实际也如此,不过因为二分的时候两个合一起的长度是不超过 \(2n\) 的,所以其实能跑。

LOJ3919

显然 wqs 二分一下,猜测 \(w(l,r)\) 确实是满足四边形不等式的。

有神经仨 \(\lg\) 做法,cdq 分治一下类莫队算权值即可。

事实上可以单 \(\lg\),考虑建出笛卡尔树,可以在上面 dp 算代价,没太听懂。

upd:喜报,使用单老哥分治法可做到两只老哥,战胜了笛卡尔树上李超,然而有点卡哈希。

P8864

随便加和不变,于是想到做个异或前缀和变成交换操作,要求至多 \(k\) 段连续的 \(a_{l-1}\)

这个东西也可以四边形不等式!且注意到我们的转移 \(f_k(l,r)\gets f_{k-1}(l,p)+w(p,r)\),它长成个矩阵的模样。

因此我们可以使用 \(\mathcal{O}(n^2)\) 的矩阵乘法配合矩阵快速幂解决这个题!

CF1534G

对于一个点 \((x_i,y_i)\),发现最优的处理点 \((x,y)\) 满足 \(x+y=x_i+y_i\),按此排序。

\(f(i,x)\) 为考虑前 \(i\) 个点且横坐标的 \(x\) 处的代价,有转移 \(f(i,x)\gets f(i-1,x')+|x_i+y_i-x-y_i|+|x_i-x|\)

显然可以拆绝对值,然后用 slope-trick 解决。

LOJ2537

原题,显然是可以 \(f(i,x)\) 然后线段树合并的。

LOJ3044

先求 \(\le k\) 的方案数。

考虑最初根节点为 \(W\),那么造成影响就需要干扰从 \(W\) 到根的一条链。

一个想法是设 \(f(u,0/1/2)\)

LOJ3711

最小值的期望比较难求,计算 \(\ge V\) 的概率再求和。

\(\ge V\) 的点染黑,则从 \(x\) 只能走到错误的全黑子树,再走到 \(y\)

\(f(x,y)=\prod w_u\)

\(g(x)=1+\sum\frac{g_v}{c_{u,v}+1}\)

\(c_{u,v}\)\(y\)\(v\) 中的 \(c_u\)

显然符合矩阵形式,不断染黑再计算,可以动态 dp。

QOJ5171

GYM102155J

\(f(i,j)\) 为考虑前 \(i\) 个数,另一个子序列前缀最大值为 \(j\)

\(\max\{a[1,i]\}=m_i\)

  1. \(j<a_i,\)f(i,j)=f(i-1,j-1)+m_i-a_i$;
  2. \(j>a_i\)\(f(i,j)=f(i-1,j-1)+j-a_i\)
  3. \(f(i,a_i)=\min\limits_{j<a_i}f(i-1,j)\)

\(-a_i\) 看作全局 tag,操作三看作单点修改,操作一是前缀加定值,但操作二后缀加下标。

把操作二先挂着,遇到操作三再执行。

有神秘性质 \(j=k+1,f_k\le f_j\),那么 \(j\) 是没用的可以删掉。

P10181

显然有四边形不等式然后 wqs 二分,转移式子 \(f(i,k)=\max\limits_{j\le i}f(j-1,k-1)+w(j,i)\)

但是对于 \(m\) 次询问还是太吃操作了,发掘一下性质。

wqs 二分的斜率为 \(c\),存在一个关系 \(c\le\frac{n}{L(c)-1}\)

\(L(c)\) 为此时的最优段数,这个比较符合人类认知,\(c\) 大了段数就少了。

那么对 \(k\) 根分,\(k\le B\) 时朴素 dp,\(k>B\)\(c\le n/B\) 再做 wqs 二分。

计算过程可以使用单调栈配合并查集定位做到 \(\mathcal{O}(n)\),整体 \(\mathcal{O}(n\sqrt{n})\)

posted @ 2025-08-18 21:04  LQ636721  阅读(9)  评论(0)    收藏  举报