Luogu P5617 [MtOI2019] 不可视境界线
非常好题目。DP 强行优化 \(O(n^3)\to O(n\log^2n)\)。实际上是把 \(O(nr\log n)\) 和 \(O(nk\log n)\) 的两个 Subtask 结合起来得到正解。
具体来说就是:
- 优化转移,此题中代价函数带三角函数十分复杂,考虑尝试 决策单调性(求导 / 四边形不等式)。
- 优化状态,此题中要求 (恰好)选 \(k\) 个圆 需要二维状态,考虑 wqs 二分 优化掉 \(k\) 这一维状态。
首先考虑 半径均为 \(r\),圆心均在 \(x\) 轴上的 \(n\) 个圆 的面积并如何速求。显然直接按圆心位置线性扫一遍,判定圆 \(i\) 与圆 \(i-1\) 的位置关系,再用弓形面积算出重合面积即可。以相交情况看,即:
相离和包含情形是简单的。然后就可以进行简单的 \(f_{n,k}\) DP,\(O(n)\) 枚举上一个转移,复杂度是 \(O(n^3)\) 的。但实际上跑不过去这一档分。
CAUTION: 三角函数 是 常数巨大 的。这里可以发现相交时才需要计算,这时显然有 \(d(i,j)\in(0,r]\) 且为 整数,所以可以 \(O(r)\) 预处理 所有 \(\arccos(\dfrac{x}{r})\) 的值,可大大减小常数。
可以发现这个代价函数 \(s\) 是一个很难优化转移的形式。可以意识到类似的问题也出现在 \(s\) 为难于分离 \(i,j\) 的高次函数的情况下,这时候 决策单调性 的方法常用。
若考虑求导,此题中 \(s\) 看起来可导,求出来二阶导数确实是非负的,因此 \(s\) 具有凸性,可以用决策单调性优化。但是显然过于难算,并不实用。
因此考虑证明 \(s(i,j)\) 满足四边形不等式。这个直接回归几何意义(圆的交)分类讨论即可。
于是用 分治 或 二分队列 求解。可以做到 \(O(n^2\log n)\)。
现在转移可以做到均摊 \(O(\log n)\),但是状态数始终是 \(O(nk)\) 而 \(k\le n\le 10^5\)。所以必须优化掉 \(k\) 这一维,也就是去掉 恰好选出 \(k\) 个 的限制,使用 wqs 二分。
Proof:显然 \(k\) 这一维上的 \(f_{n,k}\) 是凸的。几何意义亦可证明。
套路地,每次额外给 每选出一个圆 加上一个贡献 \(mid\) 即可。
同样可以用决策单调性优化 \(\max_{k=1}^{i-1}f_i+s(k,i)\) 的转移。
最终复杂度 \(O(n\log n\log k)\)。

浙公网安备 33010602011771号