Robot and String
题意翻译
## 题意翻译
给你一个字符串 **S**
以及**Q**个**l**,**r**。
对$S_{l_i}$~$S_{r_i}$这个子串进行如下变换:
1. 如果存在相邻两个字符相同,则**aa**变为**b**,**bb**变为**c**,**cc**变为**d**……**yy**变为**z**,**zz**就直接变为空,只变换最靠前的一处相邻字母
2. 重复1步骤,直到无法继续变换或子串为空
对每个l,r,输出“Yes”表示这个子串最后会变为空串,输出“No”表示不会
题目描述
[problemUrl]: https://atcoder.jp/contests/mujin-pc-2017/tasks/mujin_pc_2017_c
あなたは、文字列を処理するロボットを開発しています。 英小文字のみからなる文字列 $ t $ をこのロボットに与えると、ロボットは次の手順に従って文字列を処理します。
1. $ t_i\ =\ t_{i\ +\ 1} $ であるような最小の $ i $ を選ぶ。 そのような $ i $ が存在しない場合、処理を終える。
2. $ t_i $ が `z` である場合、$ t_i $, $ t_{i\ +\ 1} $ を取り除く。 $ t_i $ が `z` でない場合、$ t_i $ の次のアルファベットを $ c $ として、$ t_i $, $ t_{i\ +\ 1} $ をまとめて$ 1 $ 文字の $ c $ へ置き換える。
3. 1. へ戻る。
例えば、文字列 `axxxxza` をロボットに与えると、文字列は `axxxxza` → `ayxxza` → `ayyza` → `azza` → `aa` → `b` と処理されます。
英小文字のみからなる文字列 $ s $ が与えられます。 $ s $ について $ Q $ 個の質問に答えてください。 $ i $ 番目の質問は次のようなものです。
- $ s $ の $ l_i $ 文字目から $ r_i $ 文字目までの連続した部分文字列をロボットに与えると、処理された後の文字列は空文字列になるか?
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ s $ $ Q $ $ l_1 $ $ r_1 $ $ l_2 $ $ r_2 $ $ : $ $ l_Q $ $ r_Q $
输出格式
$ Q $ 行出力せよ。 $ i $ 行目には、$ i $ 番目の質問に対する答えとして `Yes` または `No` を出力せよ。
输入输出样例
输入样例 #1
axxxxza
2
1 7
2 6
输出样例 #1
No
Yes
输入样例 #2
aabcdefghijklmnopqrstuvwxyz
1
1 27
输出样例 #2
Yes
输入样例 #3
yzyyyzyzyyyz
8
1 6
7 12
1 12
6 11
1 1
1 3
4 9
3 8
输出样例 #3
Yes
Yes
Yes
Yes
No
No
No
No
说明
### 制約
- $ 1\ <\ =\ |s|\ <\ =\ 5\ ×\ 10^5 $
- $ s $ は英小文字のみからなる。
- $ 1\ <\ =\ Q\ <\ =\ 10^5 $
- $ 1\ <\ =\ l_i\ <\ =\ r_i\ <\ =\ |s| $
### Sample Explanation 1
\- $ 1 $ 番目の質問では、文字列は `axxxxza` → `ayxxza` → `ayyza` → `azza` → `aa` → `b` と処理されます。 - $ 2 $ 番目の質問では、文字列は `xxxxz` → `yxxz` → `yyz` → `zz` → `` と処理されます。