A5444 | 午枫的字符串反转
时间限制2s
内存限制512MB
通过 / 提交0/0
题目描述
小午认为一个字符串中,如果只由 $0$ 和 $1$ 组成,并且字符串中任意连续的 $2$ 个字符都不相同的字符串是好字符串。
现在小午有一个长度为 $n$ 且只由 $0$ 和 $1$ 组成的字符串 $s$ 。他将依次对小枫进行 $q$ 次查询,每个查询有以下两种方式:
-
-
现在小午有一个长度为 $n$ 且只由 $0$ 和 $1$ 组成的字符串 $s$ 。他将依次对小枫进行 $q$ 次查询,每个查询有以下两种方式:
-
1 L R :将 $s$ 的第 $L$ 个字符到第 $R$ 个字符的 $0$ 和 $1$ 反转。即对于满足 $L\leq i\leq R$ 的整数 $i$,如果 $s$ 的第 $i$ 个字符为 $0$,则变为 $1$,如果为 $1$,则变为 $0$ 。-
2 L R :取出 $s$ 的第 $L$ 个字符到第 $R$ 个字符(顺序不变)组成一个长度为 $R-L+1$ 的字符串 $S'$。如果 $S'$ 是好字符串,则输出 Yes,否则输出 No 。输入格式
第一行输入两个整数 $n,q$ $(1\leq n,q\leq 5\times10^5)$ ,分别表示字符串的长度以及询问次数。
第二行输入一个长度为 $n$ 的字符串 $s$ ,保证字符串中只包含
接下来 $q$ 行,每行输入一个查询,每个查询为以下两种形式之一:
第二行输入一个长度为 $n$ 的字符串 $s$ ,保证字符串中只包含
0 ,1 两种字符。接下来 $q$ 行,每行输入一个查询,每个查询为以下两种形式之一:
1 L R 或 2 L R ,其中 $1\leq L \leq R \leq n$ ,保证至少存在一个类型 $2$ 的查询。含义见题面所示。输出格式
设第 $2$ 种类型的查询有 $K$ 个,请输出 $K$ 行。
第 $i$ 行输出第 $i$ 个第 $2$ 种类型查询的结果。
第 $i$ 行输出第 $i$ 个第 $2$ 种类型查询的结果。
输入输出样例
输入 #1
5 6 10100 2 1 3 2 1 5 1 1 4 2 1 5 1 3 3 2 2 4
输出 #1
Yes No Yes No
输入 #2
1 2 1 1 1 1 2 1 1
输出 #2
Yes
样例解释 1
初始时,$S=$
- 对于第 $1$ 个查询,取出 $S$ 的第 $1$ 到第 $3$ 个字符,得到 $S'=$
- 对于第 $2$ 个查询,取出 $S$ 的第 $1$ 到第 $5$ 个字符,得到 $S'=$
- 对于第 $3$ 个查询,将 $S$ 的第 $1$ 到第 $4$ 个字符的
- 对于第 $4$ 个查询,取出 $S$ 的第 $1$ 到第 $5$ 个字符,得到 $S'=$
- 对于第 $5$ 个查询,将 $S$ 的第 $3$ 个字符的
- 对于第 $6$ 个查询,取出 $S$ 的第 $2$ 到第 $4$ 个字符,得到 $S'=$
样例解释 2
注意,仅由
初始时,$S=$
10100。依次处理每个查询如下: - 对于第 $1$ 个查询,取出 $S$ 的第 $1$ 到第 $3$ 个字符,得到 $S'=$
101。这是好字符串,输出 Yes。- 对于第 $2$ 个查询,取出 $S$ 的第 $1$ 到第 $5$ 个字符,得到 $S'=$
10100。这不是好字符串,输出 No。- 对于第 $3$ 个查询,将 $S$ 的第 $1$ 到第 $4$ 个字符的
0 和 1 反转。此时 $S=$ 01010。- 对于第 $4$ 个查询,取出 $S$ 的第 $1$ 到第 $5$ 个字符,得到 $S'=$
01010。这是好字符串,输出 Yes。- 对于第 $5$ 个查询,将 $S$ 的第 $3$ 个字符的
0 和 1 反转。此时 $S=$ 01110。- 对于第 $6$ 个查询,取出 $S$ 的第 $2$ 到第 $4$ 个字符,得到 $S'=$
111。这不是好字符串,输出 No。样例解释 2
注意,仅由
0 或 1 组成的长度为 $1$ 的字符串也满足好字符串的条件。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?