atcoder#AGC059A. [AGC059A] My Last ABC Problem

[AGC059A] My Last ABC Problem

配点 : 500500

問題文

文字 A, B, C のみからなる文字列 tt を考えます。 これに対し、以下の操作を行えます。

  • 任意の部分文字列 t[l:r]t[l:r] と文字 ((A,,B,,C)) の任意の並べ替え (X,Y,Z)(X, Y, Z) を選ぶ。ここで、t[l:r]t[l:r]ttll 文字目から rr 文字目までで形成される部分文字列であり、llrr を選べる。そして、t[l:r]t[l:r] の各文字 A, B, C をそれぞれ XX, YY, ZZ で置き換える。

例えば、文字列 t=t = ACBAAC に対して、部分文字列 t[3:6]t[3:6](X,Y,Z)=((X,Y,Z)=(C,,B,,A)) を選べます。 この操作を行うと、文字列は ACBCCA となります。

アリーナは、すべての文字が同じであるような文字列が好きです。彼女は、文字列 tt の美しさを、そのすべての文字を同じにするために必要な最小の操作回数と定義します。

長さ NN の文字 A, B, C のみからなる文字列 SS が与えられます。 QQ 個のクエリに答えてください。ii 個目のクエリは以下の通りです。

  • 整数 LiL_iRiR_i が与えられるので、部分文字列 t=S[Li:Ri]t=S[L_i:R_i] の美しさを求めよ。

制約

  • 1N1051 \le N \le 10^5
  • SS は文字 A, B, C のみからなる文字列である。
  • 1Q1051 \le Q \le 10^5
  • 1LiRiN1 \le L_i \le R_i \le N
  • 入力中のすべての数は整数である。

入力

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

NN QQ

SS

L1L_1 R1R_1

L2L_2 R2R_2

\vdots

LQL_Q RQR_Q

出力

QQ 行を出力せよ。ii 行目には、ii 個目のクエリへの答えを出力せよ。

6 4
ABCCCA
3 5
2 3
1 3
1 6
0
1
2
2

一つ目のクエリでは、文字列は t=t = CCC であり、すでにすべての文字が同じです。答えは 00 となります。

二つ目のクエリでは、文字列は t=t = BC です。これは、部分文字列 t[2:2]t[2:2](X,Y,Z)=((X,Y,Z)=(A,,C,,B)) を選ぶことで、一回の操作で BB に変えることができます。

三つ目のクエリでは、文字列は t=t = ABC です。これは、部分文字列 t[2:3]t[2:3](X,Y,Z)=((X,Y,Z)=(C,,A,,B)) を選ぶことで、一回の操作で AAB に、続いて部分文字列 t[1:2]t[1:2](X,Y,Z)=((X,Y,Z)=(B,,A,,C)) を選ぶことで、二回目の操作で BBB に変えることができます。