atcoder#AGC059A. [AGC059A] My Last ABC Problem

[AGC059A] My Last ABC Problem

题目描述

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

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

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

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

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

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

输入格式

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

N N Q Q S S L1 L_1 R1 R_1 L2 L_2 R2 R_2 \vdots LQ L_Q RQ R_Q

输出格式

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

题目大意

给出一个长度为 NN 的字符串 SSSS 仅含 A,B,C

每次操作选择 l,rl,r(X,Y,Z)(X,Y,Z)X,Y,ZX,Y,Z 都是 A,B,C 其中之一,且互不相同。接着对于 S[l,r]S_{[l,r]},将 A 变成 XXB 变成 YYC 变成 ZZ

QQ 组询问,每次询问 L,RL,R,求将 S[L,R]S_{[L,R]} 都变成同一字符的最小操作次数。

1N,Q1051\le N,Q \le 10^5

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

提示

制約

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

Sample Explanation 1

一つ目のクエリでは、文字列は t = t\ = CCC であり、すでにすべての文字が同じです。答えは 0 0 となります。 二つ目のクエリでは、文字列は 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 に変えることができます。