P4155 [SCOI2015]国旗计划

很有意思的一道题。

按套路破环成链,要注意右端点小于左端点的区间跨越了 \(n\to 1\)。

假设钦定了某个士兵 \(i\),接下来肯定贪心选择左端点小于等于当前右端点的右端点最大的下一个区间。因为区间不存在包含关系,所以形式化地讲就是找到最大的 \(j\) 使得 \(C_j\leq D_i\)。

直接做是 \(O(n^2)\) 的,但观察到一条决策链中点的决策是存在重合的,即 \(j\) 的决策可以部分应用到 \(i\) 上面,并且存在单调性。

考虑 \(i\) 和 \(j\) 之间连边,这样会形成一个决策森林。其中点 \(u\) 的答案为距离 \(u\) 最近的祖先 \(v\) 使得 \(D_v\geq C_u+m\)。

上一篇:极限定义新讲:动态定义与静态定义


下一篇:java_DAY11:方法重写:overriding、object介绍