CF1881G Anya and the Mysterious String
题目描述
Anya 收到了一串来自罗马的字符串 $s$,长度为 $n$。字符串 $s$ 由小写拉丁字母组成,乍一看并没有什么可疑之处。字符串附带了一份说明书。
说明书内容如下:
回文串是指从左到右和从右到左读都相同的字符串。例如,字符串 "anna"、"aboba"、"level" 是回文串,而 "gorilla"、"banan"、"off" 不是回文串。
字符串 $s$ 的子串 $[l \ldots r]$ 指的是 $s_l s_{l+1} \ldots s_{r-1} s_r$。例如,字符串 "generation" 的子串 $[4 \ldots 6]$ 是 "era"。
如果一个字符串不包含长度不少于 $2$ 的回文子串,则称其为美丽字符串。例如,"fox"、"abcdef"、"yioy" 是美丽字符串,而 "xyxx"、"yikjkitrb" 不是美丽字符串。
当给字符 $s_i$ 加上整数 $x$ 时,它会在字母表中向后移动 $x$ 次,"z" 之后回到 "a"。
当给字符串 $s$ 的子串 $[l, r]$ 加上整数 $x$ 时,字符串变为 $s_1 s_2 \ldots s_{l-1} (s_l + x) (s_{l+1} + x) \ldots (s_{r-1} + x) (s_r + x) s_{r+1} \ldots s_n$。例如,将字符串 "abazaba" 的子串 $[2, 4]$ 加上 $6$ 后,得到 "ahgfaba"。
说明书结束。
读完说明书后,Anya 发现她需要回答 $m$ 个询问。询问有两种类型:
1. 给字符串 $s$ 的子串 $[l \ldots r]$ 加上整数 $x$。
2. 判断字符串 $s$ 的子串 $[l \ldots r]$ 是否为美丽字符串。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 2 \cdot 10^5$),分别表示字符串 $s$ 的长度和询问的数量。
第二行包含一个长度为 $n$ 的字符串 $s$,由小写拉丁字母组成。
接下来的 $m$ 行,每行表示一个询问:
- $1\ l\ r\ x$($1 \le l \le r \le n$,$1 \le x \le 10^9$)——第一类询问的描述;
- $2\ l\ r$($1 \le l \le r \le n$)——第二类询问的描述。
保证所有测试用例中 $n$ 的总和与 $m$ 的总和均不超过 $2 \cdot 10^5$。
输出格式
对于每个第二类询问,如果字符串 $s$ 的子串 $[l \ldots r]$ 是美丽字符串,输出 "YES",否则输出 "NO"。
你可以以任意大小写输出 "YES" 和 "NO"(例如 "yEs"、"yes"、"Yes"、"YES" 都被认为是肯定答案)。
说明/提示
在第一个测试用例的第一个测试中,过程如下:
- tedubcyyxopz:字符串 edub 是美丽字符串;
- tedubcyyxopz $\to$ tedwdeaaxopz;
- tedwdeaaxopz:字符串 tedwdea 不是美丽字符串,因为包含回文串 edwde;
- tedwdeaaxopz $\to$ terkreaaxopz;
- terkreaaxopz $\to$ terkreaaarsz;
- terkreaaarsz $\to$ terkreaaaasz;
- terkreaaaasz:字符串 kreaaaa 不是美丽字符串,因为包含回文串 aaaa;
- terkreaaaasz:字符串 asz 是美丽字符串。
由 ChatGPT 4.1 翻译