atcoder#MUJINPC2017C. Robot and String

Robot and String

题目描述

あなたは、文字列を処理するロボットを開発しています。 英小文字のみからなる文字列 t t をこのロボットに与えると、ロボットは次の手順に従って文字列を処理します。

  1. ti = ti + 1 t_i\ =\ t_{i\ +\ 1} であるような最小の i i を選ぶ。 そのような i i が存在しない場合、処理を終える。
  2. ti t_i z である場合、ti t_i , ti + 1 t_{i\ +\ 1} を取り除く。 ti t_i z でない場合、ti t_i の次のアルファベットを c c として、ti t_i , ti + 1 t_{i\ +\ 1} をまとめて1 1 文字の c c へ置き換える。
    1. へ戻る。

例えば、文字列 axxxxza をロボットに与えると、文字列は axxxxzaayxxzaayyzaazzaaab と処理されます。

英小文字のみからなる文字列 s s が与えられます。 s s について Q Q 個の質問に答えてください。 i i 番目の質問は次のようなものです。

  • s s li l_i 文字目から ri r_i 文字目までの連続した部分文字列をロボットに与えると、処理された後の文字列は空文字列になるか?

输入格式

入力は以下の形式で標準入力から与えられる。

s s Q Q l1 l_1 r1 r_1 l2 l_2 r2 r_2 : : lQ l_Q rQ r_Q

输出格式

Q Q 行出力せよ。 i i 行目には、i i 番目の質問に対する答えとして Yes または No を出力せよ。

题目大意

题意翻译

给你一个字符串 S

以及Qlr

SliS_{l_i}~SriS_{r_i}这个子串进行如下变换:

  1. 如果相邻两个字符相同,则aa变为bbb变为ccc变为d……yy变为zzz就直接变为空

  2. 重复1步骤,直到无法继续变换或子串为空

对每个l,r,输出“Yes”表示这个子串最后可以变为空串,输出“No”表示不可以

axxxxza
2
1 7
2 6
No
Yes
aabcdefghijklmnopqrstuvwxyz
1
1 27
Yes
yzyyyzyzyyyz
8
1 6
7 12
1 12
6 11
1 1
1 3
4 9
3 8
Yes
Yes
Yes
Yes
No
No
No
No

提示

制約

  • 1 < = s < = 5 × 105 1\ <\ =\ |s|\ <\ =\ 5\ ×\ 10^5
  • s s は英小文字のみからなる。
  • 1 < = Q < = 105 1\ <\ =\ Q\ <\ =\ 10^5
  • 1 < = li < = ri < = s 1\ <\ =\ l_i\ <\ =\ r_i\ <\ =\ |s|

Sample Explanation 1

- 1 1 番目の質問では、文字列は axxxxzaayxxzaayyzaazzaaab と処理されます。 - 2 2 番目の質問では、文字列は xxxxzyxxzyyzzz → `` と処理されます。