QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: jiangly

Posted at: 2026-04-15 16:03:23

Last updated: 2026-04-15 16:03:29

Back to Problem

题解

注意到在区间扩张的过程当中,区间 or 是递增的,区间 and 是递减的,因此 $S(B)$ 是递减的。

最大化

问题相当于分成 $M$ 段,并选择 $K$ 段作为关键段,最大化关键段分数的最小值。如果 $K< M$,则答案一定为 $1$,因为我们可以将 $A_1,\ldots,A_K$ 单独分成一段,然后将后缀分成 $M-K$ 段。

如果 $K=M$,那么可以二分答案,每次贪心分尽可能长的段。这里二分可以使用分数二分,或者在所有可能的分数中二分,因为每个左端点只有 $O(\log V)$ 种分数,总共 $O(N\log V)$。

最小化

令 $K\gets M+1-K$,则问题相当于分成 $M$ 段,并选择 $K$ 段作为关键段,最小化关键段分数的最大值。根据单调性,一定存在最优解满足非关键段的长度都为 $1$,我们只需要选择 $K$ 个不相交的段,使得总长度不超过 $N-(M-K)$ 即可。

二分答案,问题变为选择 $K$ 个不相交的关键段,最小化总长度。我们把这个问题看成分成 $K$ 段,每一段的代价是段内最短的关键段长度,可以证明这个代价是 Monge 的。因此我们可以 wqs 二分,二分后内部是 $O(N)$ 的 DP。

时间复杂度 $O(N\log N(\log N+\log V))$。

Comments

No comments yet.