P4979 矿洞:坍塌

题目背景

- 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 \sim 5)$ 区间的 $BB$ 和 $(5 \sim 5)$ 区间的 $B$ 均符合要求,而 $(10 \sim 12)$ 区间的 $CCC$ 不符合要求。 材料有灵性,所以材料会有变化。 现在有 $N$ 吨材料,$K$ 个询问。每个询问是以下的 $2$ 种形式之一: - `A x y op` 表示替换材料,将 $x$ 到 $y (1\leq x \leq y \leq N)$ 区间内的材料替换为 $op$,$op$ 为 $A,B,C$ 三种材料字符中的一个。 - `B x y` 表示是否询问,即询问 $x$ 到 $y(1\leq x \leq y \leq N)$ 区间内的材料是否合法,合法输出 `Yes`,不合法输出 `No`。 注意:当 $x=1$ 或 $y=N$ 时,你的程序不需要判断前后的情况,而只需要判断区间内的情况。

输入格式

- 第一行一个正整数 $N$。 - 接下来 $N$ 个字符,表示材料。 - 接下来 $K$ 个询问,格式为上述的一种。

输出格式

对于每个 `B x y` 的询问,输出一行 `Yes` 或 `No`。

说明/提示

- 对于 $30\%$ 的数据,$N\le1000,K\le2000$ - 对于 $70\%$ 的数据,$N\le5000,K\le5000$ - 对于 $100\%$ 的数据,$N\le5\cdot10^5,K\le5\cdot10^5, 1\leq x \leq y \leq N$