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\)。
- \(j<a_i,\)f(i,j)=f(i-1,j-1)+m_i-a_i$;
- \(j>a_i\),\(f(i,j)=f(i-1,j-1)+j-a_i\)。
- \(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})\)。

浙公网安备 33010602011771号