时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld
题目描述
小红得知炉石传说里有一个卡牌叫“蹒跚的食尸鬼”,想出了这样一个问题:
已知食尸鬼攻击力为1,血量为3,另外有一个亡语:死亡时对场上所有随从(不分敌我)造成1点伤害(死亡立即触发)。
目前敌方场上有一个1攻,无穷大血量的随从。
小红有以下3种操作:
S:在自己的场上下一个1攻3血的食尸鬼。
A:命令每个食尸鬼进攻敌方随从。(顺序可以自己决定,命令结束后一定要保证剩余在场上的食尸鬼全部进行过进攻)。
H:使用法术:火山药水。对场上所有随从(不分敌我)造成2点伤害。
ps:一个随从进攻一个随从,会使两个随从的血量都会扣取对方随从的攻击力的值,当一个随从的血量小于1点时,随从就会死亡。
小红拿到了一个字符串,有很多次询问。
询问有两种类型
当

时 小红想知道在空场初始状态下,执行[l,r]连续子串最多可以对敌方随从造成多少伤害?
当

时 小红将这个字符串的一个字符修改成他想要的字符。
输入描述:
第一行输入两个正整数

和

,代表操作指令集长度和询问次数。
第二行输入一个长度为

的、只包含'S'、'A'、'H'三种字符的字符串。
接下来的

行,每行首先输入一个正整数

。
当

时 随后输入两个正整数

代表查询区间

的字符串最多可以对敌方随从造成多少伤害。
当

时 随后输入一个正整数

和一个字符

代表将字符串的第

个字符修改成

。
(

,

)
输出描述:
对于每一个
的情况 输出一行整数,代表对地方随从造成的总伤害。
示例1
输入
复制
10 3
SSASHSSSAA
1 1 3
1 3 4
1 4 10
说明
第一个询问 SSA 我们会下2个3血食尸鬼,然后全部进行1次攻击,造成2点伤害,剩下2个2血食尸鬼。
第二个询问 AS 首先进行1次进攻,但是场上没有食尸鬼,随后下1个3血食尸鬼。造成0点伤害。
第三个询问 SHSSSAA 首先下1个3血食尸鬼,然后火山魔法造成2点伤害,剩下1个1血食尸鬼,随后下3个3血食尸鬼。
进行1次攻击 首先3血食尸鬼进行1次攻击,造成3点伤害,随后1血食尸鬼进行1次攻击,造成1点伤害同时自身死亡,对全场造成1点伤害,本次攻击总计造成5点伤害,同时剩下3只1血食尸鬼。
下1次攻击 任意1只食尸鬼进行1次攻击,随后全场死亡,本次攻击总计造成4点伤害。
本次询问总计造成11点伤害,可以自行验正,这样造成的伤害是最大的。
示例2
输入
复制
5 3
SAHSA
1 1 5
2 2 S
1 1 3