#P4927. 构建回文
构建回文
Description
安娜有 N 个方块排成一排,每一方块都写着一个大写字母(A−Z 中的一个)。
这些方块从左到右依次编号为 1,2,…,N。
现在,她正在学习回文。
如果一个字符串不论是从左向右看,还是从右向左看,内容都一样,那么这个字符串就是一个回文字符串。
例如,ANNA,RACECAR,AAA 和 X 都是回文字符串,而 AB,FROG 和 YOYO 则不是。
鲍勃想要测试一下安娜是否完全理解了回文这一概念,所以向她提出了 Q 个相关问题。
其中的第 i 个问题是:安娜能否使用从 Li 号到 Ri 号(包括端点方块)的所有方块,经过一系列排列使得它们构成一个回文结构?
如果可以,则回答“YES”,如果不可以,则回答“NO”。
在每个问题解答完毕之后,安娜都会把方块放回原来的位置。
Input Format
第一行包含两个整数 N 和 Q,表示方块数量和问题数量。
第二行包含一个长度为 N 的由大写字母构成的字符串。
接下来 Q 行,每行包含两个整数 Li 和 Ri,用来描述一个问题。
1≤Li≤Ri≤N, 1≤N,Q≤1e5。
Output Format
对于每一个问题,输出“YES”表示可以构成一个回文结构,输出“NO”表示不可以构成回文结构。7 5
ABAACCA
3 6
4 4
2 5
6 7
3 7YES
YES
NO
NO
YES
Hint
- 对于第一个问题,安娜需要使用方块 AACC,经排列可得到回文结构 ACCA(或 CAAC)。
- 对于第二个问题,安娜需要使用方块 A,这是回文结构。
- 对于第三个问题,安娜需要使用方块 BAAC,这些方块无法排列得到回文结构。
- 对于第四个问题,安娜需要使用方块 CA,这些方块无法排列得到回文结构。
- 对于第五个问题,安娜需要使用方块 AACCA,经排列可得到回文结构 ACACA(或 CAAAC)。