P14973 『GTOI - 2D』木棍
题目背景
木棍 + 木棍 = 木棍。
题目描述
对于一个 $01$ 串 $S$,定义 $f(S)$ 为:删除 $S$ 中所有的 `01` 子串,重复若干次直到 $S$ 中不含有 `01` 子串,此时剩下的字符串即为 $f(S)$。可以证明删除顺序不影响最终结果。
定义价值函数 $V(S)=\sum\limits_T [|S|=|T|][f(S)=f(T)]$。
给定长度为 $n$ 的 $01$ 串 $S$,需要支持以下两种操作:
- `1 l r` 对于 $S$ 中第 $l$ 个字符到第 $r$ 个字符中的每一个字符,若其是 $0$ 则修改为 $1$,否则修改为 $0$。
- `2 l r` 对于 $S$ 中第 $l$ 个字符到第 $r$ 个字符所组成的子串 $T$,求 $V(T)\bmod 998244353$。
输入格式
第一行一个正整数 $n$,表示 $S$ 的长度。
第二行 $n$ 个字符,表示 $01$ 串 $s$。
第三行一个正整数 $q$,表示操作次数。
接下来 $q$ 行,每行三个正整数 $op,l,r$,表示操作类型和参数。
输出格式
对于每个操作 $2$,输出 $V(T)\bmod 998244353$。
说明/提示
**【数据范围】**
**本题采用捆绑测试。**
对于 $100\%$ 的数据,保证 $1\le n,q\le 5\times 10^5,op\in\{1,2\},1\le l\le r\le n$。
|$\text{Subtask}$|$n\le$ |$q\le$ |特殊性质|分值 |
|:---:|:--------:|:--------:|:--:|:--:|
|$1$ |$20$ |$20$ |无 |$5$ |
|$2$ |$500$ |$1$ |有|$15$|
|$3$ |$5000$ |^ |^ |$15$|
|$4$ |$5\times 10^5$|^ |^ |$25$|
|$5$ |$5000$ |$5000$ |无 |$10$|
|$6$ |$10^5$ |$10^5$ |^ |$10$|
|$7$ |$5\times 10^5$|$5\times 10^5$|^ |$20$|
特殊性质:保证存在一次操作 $2$ 满足 $l=1,r=n$。