矿洞:坍塌
题目背景
- Made By tomoo
CYJian家里为什么那么有钱?因为他家$&@$%#开了矿!!
CYJian家虽然有矿,但是有矿也不能任性。这不,CYJian家的矿塌了......
**change:出题人仁慈地放大了空间限制**
题目描述
CYJian家的矿塌了之后,就没有经济来源了(不要问我怎么没有存款)。
于是,CYJian迫切地想要修复他家的矿。
CYJian家的矿共出产$A,B,C$三种矿石,所以我们也只能用$A,B,C$三种材料来修复他们家的矿。我们已知共有$N$吨材料,每吨材料均为$A,B,C$三种材料中的一种,它们连成了一个串,如:
$$ABCBCABCBACBCBAA$$
CYJian家对材料的要求非常严格,他每次会选择一段连续区间的材料作为修复的材料。因为不合要求的材料会使得矿再次塌陷,砸死CYJian,所以这个连续区间的材料必须满足一下$2$个要求:
- 这段连续区间必须是同一种材料
- 这段连续区间的前一个材料与后一个材料必须不相同。
例如,有一段材料为$AACBBABBBCCCBBB$,则$(4$~$5)$ 区间的 $BB$ 和 $(5$~$5)$ 区间的 $B$ 均符合要求,而 $(10$~$12)$ 区间的 $CCC$ 不符合要求。
材料有灵性,所以材料会有变化。
现在有$N$吨材料,$K$个询问。每个询问是以下的$2$种形式之一:
- A x y op 表示替换材料,将$x$到$y(1<=x<=y<=N)$区间内的材料替换为$op$,$op$为$A,B,C$三种材料字符中的一个。
- B x y 表示是否询问,即询问$x$到$y(1<=x<=y<=N)$区间内的材料是否合法,合法输出$Yes$,不合法输出$No$。
注意:当$x=1$或$y=N$时,你的程序不需要判断前后的情况,而只需要判断区间内的情况.
输入输出格式
输入格式
- 第一行一个正整数$N$
- 接下来$N$个字符,表示材料
- 接下来$K$个询问,格式为上述的一种
输出格式
对于每个 B x y 的询问,输出 $Yes$ 或 $No$
输入输出样例
输入样例 #1
15
AACBBABBBCCCBBB
3
B 4 5
B 5 5
B 10 12
输出样例 #1
Yes
Yes
No
输入样例 #2
5
ABBBB
2
B 1 4
B 2 5
输出样例 #2
No
Yes
说明
- 对于$30$%的数据,$N\le1000,K\le2000$
- 对于$70$%的数据,$N\le5000,K\le5000$
- 对于$100$%的数据,$N\le500000,K\le500000,1<x<=y<N$