2522: 正四面体

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

正四面体总共有4个面,每个面都是一个正三角形。现在把它的一个面标记上字母A,如图3中所示,A标记在地面上。

 

一个正四面体的一次滚动显然有3个方向可以选择:向左(L)、向右(R)、向后(B)。如图4所示:

 

于是这个正四面体的滚动过程就可以用一个只包含“L”、“R”、“B”的字串来描述。

初始时,正四面体的A面朝下,现在SECSA将给这个正四面体一串滚动指令—当然就是一个这样的字符串—让这个正四面体每秒滚动一下。也就是说,第一秒内正四面体A面朝下,第一秒末执行第一条指令,第二秒末执行第二条指令,以此类推,直至将整个指令串执行完毕。

你的任务就是当SECSA询问你的时候告诉他:这个正四面体在第L秒到第R秒内A面有多少秒朝着地面。

当然,SECSA随时会修改它的某一条指令。因此,你的程序应该能执行下面两个操作:

  1. 接受SECSA修改第i条指令信息。

  2. 回答SECSA的“在第L秒到第R秒内A面有多少秒朝着地面”的询问。

例如原指令串为“LLLLB”,那么第146秒内A面是朝下的。此时,如果SECSA向你询问在第3秒到第6秒内A面有多少秒朝着地面,你就应该回答“2”。而SECSA将第3条指令修改为“R”的话指令串就变为“LLRLB”,那么正四面体就只有在第15秒内A面朝了。如图5所示。

 

输入

第一行一个整数n,表示指令串中包含的指令条数。

第二行一个字符串,共包含n个字符,每个字符是“L”、“R”、“B”之一,表示初始的指令串。

第三行一个整数m,表示需要处理的操作总数。

接下来m行每行一个操作,为以下两种格式之一。

  1. 0 i c: 表示把第i个操作改成cc为“L”、“R”、“B”之一。

  2. 1 L R: 表示询问第L秒到第R秒内,A面有多少秒朝下。

输入保证:1<=i<=n1<=L<=R<=n+1

 

输出

 

对于每个询问操作输出一行一个整数表示答案。

样例输入 复制

5
LLLLB
3
1 3 6
0 3 R
1 3 6
8
LLLLBRRR
7
1 1 9
1 4 7
0 2 R
1 1 9
1 2 9
0 7 B
1 3 5

样例输出 复制

2
1
4
2
1
0
0

提示

 

对于20%的数据,1≤n≤5001≤m≤1000

对于另外10%的数据,1≤n≤90001≤m≤18000

对于另外10%的数据,修改操作的个数=0

对于另外10%的数据,修改操作的个数=2

对于另外10%的数据,查询操作的个数≤10

对于100%的数据,1≤n≤600001≤m≤150000