#ABC473F. A/AB 插入 / A/AB Insertion

A/AB 插入 / A/AB Insertion

题目描述

给定一个由 AB 组成的长度为 NN 的字符串 SS。 请处理共 QQ 个以下类型的询问。

1 i c

类型 11:将 SS 的第 ii 个字符改为 cc

2 l r

类型 22: 设字符串 TT 为从当前字符串 SS 中取出第 ll 个到第 rr 个字符所得到的字符串。 如果能够通过以下操作得到字符串 TT,输出 Yes;否则输出 No

  • 从空字符串开始,以任意顺序进行以下两种操作任意多次(可以是零次)。
    • 选择字符串中的任意一个位置(可以是开头或结尾),在该处插入 A
    • 选择字符串中的任意一个位置(可以是开头或结尾),在该处插入 AB

输入格式

输入按以下格式从标准输入读入:

  • NN
  • SS
  • QQ
  • Query1{\rm Query}_1
  • Query2{\rm Query}_2
  • \vdots
  • QueryQ{\rm Query}_Q

其中,Queryi{\rm Query}_i 表示第 ii 个询问,每个询问的输入格式遵循题目描述中给出的格式。

输出格式

每当给出一个类型 22 的询问时,将答案输出为一行。

数据范围

  • NN 是满足 1N5×1051 \le N \le 5 \times 10^5 的整数。
  • SS 是由 AB 组成的长度为 NN 的字符串。
  • QQ 是满足 1Q2×1051 \le Q \le 2 \times 10^5 的整数。
  • 每个给定的询问为类型 11 或类型 22
  • 类型 11 的询问满足以下限制:
    • ii 是满足 1iN1 \le i \le N 的整数;
    • ccAB
  • 类型 22 的询问满足以下限制:
    • llrr 是满足 1lrN1 \le l \le r \le N 的整数。
10
AABBAABABB
6
2 1 10
1 5 B
2 1 10
2 6 8
1 3 A
2 1 10
Yes
No
Yes
Yes

该输入包含六个询问。

  • 初始时,S=S= AABBAABABB

  • 对于第 11 个询问,T=T= AABBAABABB,即取出 SS 的第 11 到第 1010 个字符得到的字符串,可以通过以下步骤得到,因此输出 Yes

  • 从空字符串开始。

  • 在空字符串的开头插入 AB,字符串变为 AB

  • AB 的第 11 个字符之后插入 AB,字符串变为 AABB

  • AABB 的末尾插入 AB,字符串变为 AABBAB

  • AABBAB 的第 55 个字符之后插入 AB,字符串变为 AABBAABB

  • AABBAABB 的第 77 个字符之后插入 AB,字符串变为 AABBAABABB

  • 对于第 22 个询问,将 SS 的第 55 个字符改为 B。此后 S=S= AABBBABABB

  • 对于第 33 个询问,T=T= AABBBABABB,即取出 SS 的第 11 到第 1010 个字符得到的字符串,无法通过题目描述中的操作得到,因此输出 No

  • 对于第 44 个询问,T=T= ABA,即取出 SS 的第 66 到第 88 个字符得到的字符串,可以通过题目描述中的操作得到,因此输出 Yes

  • 对于第 55 个询问,将 SS 的第 33 个字符改为 A。此后 S=S= AAABBABABB

  • 对于第 66 个询问,T=T= AAABBABABB,即取出 SS 的第 11 到第 1010 个字符得到的字符串,可以通过题目描述中的操作得到,因此输出 Yes

  • 来源:AtCoder ABC 473 F

子任务设置

  • 子任务 1(30 分):N2000N \le 2000Q2000Q \le 2000
  • 子任务 2(30 分):没有类型 11 的询问(字符串不会被修改)。
  • 子任务 3(40 分):无特殊限制。