摘要: 题目研究了一个长度为 $n$ 的 01 串 $S$ 的变换规律,定义变换 $S' = f(S)$ 为:当 $i \leq 2$ 时 $s'_i = s_i$;当 $i \geq 3$ 且 $s_{i-2} = 0$ 时 $s'_i = s_i$;当 $i \geq 3$ 且 $s_{i-2} = 1$ 时 $s'_i = s_{i-1}$。给定 $Q$ 次区间反转操作,每次操作后询问需要多少次变换才能使 $S' = S$。通过分析发现,变换的关键在于 `110` 和 `101` 两种模式,其中 `110` 会引发连锁反应,而 `101` 则不会。使用线段树维护区间信息,包括左右边界、`110` 和 `001` 的位置以及是否存在 `101` 或 `010`,从而高效处理区间修改和查询。最终算法的时间复杂度为 $O(n + q \log n)$,适用于 $n, q \leq 4 \times 10^5$ 的大规模数据。 阅读全文
posted @ 2025-07-21 18:27 wing_heart 阅读(21) 评论(0) 推荐(0)