atcoder#MUJINPC2017C. Robot and String

Robot and String

配点 : 13001300

問題文

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

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

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

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

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

制約

  • 1s5×1051 \leq |s| \leq 5 \times 10^5
  • ss は英小文字のみからなる。
  • 1Q1051 \leq Q \leq 10^5
  • 1liris1 \leq l_i \leq r_i \leq |s|

入力

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

ss

QQ

l1l_1 r1r_1

l2l_2 r2r_2

::

lQl_Q rQr_Q

出力

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

axxxxza
2
1 7
2 6
No
Yes
  • 11 番目の質問では、文字列は axxxxzaayxxzaayyzaazzaaab と処理されます。
  • 22 番目の質問では、文字列は xxxxzyxxzyyzzz → `` と処理されます。
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