CF2066B White Magic题解

Sol

注意到选取包含 \(2\) 个 \(0\) 的序列一定不符合条件,因为如果把 \(2\) 个 \(0\) 一个分到前缀一个分到后缀,那么前缀 \(\min\) 为 \(0\),后缀 \(\operatorname{mex}\) 大于 \(0\),不满足条件。

同时,可以发现如果没有选 \(0\),那么一定满足条件,因为前缀 \(\min\) 一定大于 \(0\),而后缀 \(\operatorname{mex}\) 一定为 \(0\)。

记序列中的 \(0\) 的数量为 \(cnt\),那么答案一定为 \(n-cnt\) 或 \(n-cnt+1\)。

那么接下来就是判断答案是否选了 \(0\),不难发现,如果选 \(0\),那么选第一个 \(0\) 一定不劣,因为包含 \(0\) 的前缀一定满足条件,选第一个 \(0\) 可以保证包含 \(0\) 的前缀最多,此时检查选第一个 \(0\) 和其他所有非 \(0\) 的元素是否合法,如果合法答案为 \(n-cnt+1\),否则为 \(n-cnt\)。

Code

Link。

posted @ 2025-02-13 21:02  incra  阅读(63)  评论(0)    收藏  举报