#P44. 轮回的轨迹

轮回的轨迹

题目描述

  有一个长度为 $N$ 的环形字符串,标号从 $1$ 至 $N$ ,对于标号 $1 ≤ i < N$ ,第 $i$ 个字符的下一个字符是第 $i + 1$ 个字符,并且第 $N$ 个字符的下一个字符为第 $1$ 个字符。

  所以,对于操作某个区间 $l, r$ 的时候,如果 $l ≤ r$ ,则操作的是区间 $[l, r]$ ;否则 $l > r$ ,则操作的是区间 $[l, N]$ 和 $[1, r]$ 。

  现在,有如下两种操作:

$1$ $l$ $r$ $x$ :将区间为 $l, r$ 的每一个字符统一变为字符 $x$ 。

$2$ $l$ $r$ $ql$ $qr$ : 询问区间 $l, r$ 中包含的字符种类以及每种字符的个数是否与区间 $ql, qr$ 中包含的字符种类以及每种字符的个数相等。

  对于 $2$ 操作,我们认为字符串 "$aca$" 和字符串 "$aac$" 是相等的,认为字符串 "$aac$" 和字符串 "$ac$" 是不相等的,因为字符 "$a$" 的个数不相等。

输入格式

第一行,输入两个整数 $N, M(1≤N≤M≤10^5)$ ,表示环形字符串的长度和操作次数。

第二行,输入 $N$ 个小写字母,表示环形字符串标号从 $1$ 至 $N$ 的每一位字符。

接下去 $M$ 行,表示 $M$ 次操作,操作类型只包含操作 $1$ 和操作 $2$ ,且满足描述格式,并且 $x$ 为小写字母, $1≤l, r, ql, qr≤N$。

输出格式

对于每个操作 $2$ ,如果查询的两个字符串是如描述所认为的相等的,在一行中输出 "$YES$"(不带双引号),否则,在一行中输出 "$NO$"(不带双引号)。

样例

6 5
acacac
2 1 3 5 1
1 2 4 a
2 1 4 2 5
2 1 6 6 5
2 1 4 6 3
YES
YES
YES
NO

来源

2022 HGNU-SWUT暑假联合集训