#jag2018summerday2j. [jag2018summer_day2_j]AB Sort

[jag2018summer_day2_j]AB Sort

题目描述

给定一个长度为 NN 的字符串 s=s0s1...sN1s=s_0s_1...s_{N-1},由字符 AB 组成。你需要处理 QQ 个查询。考虑第 ii 个查询(1iQ1 \leq i \leq Q)。在这个查询中,给定整数 lil_irir_i。然后,对于每个 xxlixril_i \leq x \leq r_i),sxs_x 被修改为另一个字符,即 A 变为 BB 变为 A

在每个查询之后,你需要计算 f(f(B ++ ss ++ A))。其中,f(t)f(t) 是一个函数,给定一个字符串 tt,返回一个非负整数。f(t)f(t) 的值定义如下:

  • 考虑以下 步骤
    • 步骤:对所有与 BA 相同的子串,用 AB 替换它们。所有替换同时进行。
  • f(t)f(t) 是你需要执行的步骤数,直到 tt 中不存在与 BA 相同的子串为止。

例如,f(f(ABAB)) \= 11f(f(BBAA)) \= 33f(f(AAA)) \= 00

约束条件

  • 1N2000001 \leq N \leq 200000
  • s=N|s| = N
  • ss 由字符 AB 组成。
  • 1Q2000001 \leq Q \leq 200000
  • 0liriN10 \leq l_i \leq r_i \leq N-1
  • N,Q,li,riN,Q,l_i,r_i 均为整数

输入

输入从标准输入中给出,具体格式如下:

NN ss QQ l1l_1 r1r_1 l2l_2 r2r_2lQl_Q rQr_Q

输出

对于每个查询,每行输出 f(f(B ++ ss ++ A))


示例输入 1

5
BAABA
2
1 3
0 2

示例输出 1

6
6

第一个查询之后,字符串 ss 变为 BBBAA,在第一行打印 f(f(BBBBAAA))。第二个查询之后,字符串 ss 变为 AAAAA,在第二行打印 f(f(BAAAAAA))


示例输入 2

1
A
2
0 0
0 0

示例输出 2

2
2