luogu#P7119. Mivik 的游戏

Mivik 的游戏

题目背景

Mivik 和 W!ʌ!k 在玩游戏!

题目描述

Mivik 首先把 nn 枚硬币摆成一排,其中有一些正面朝上,其余的都是反面朝上。W!ʌ!k 打算不断执行以下操作直到这 nn 枚硬币中没有硬币反面朝上:

  • 如果现在这 nn 枚硬币中有 kk 枚硬币反面朝上,那么翻转从左到右第 kk 枚硬币。具体地,如果从左到右第 kk 枚硬币正面朝上,则将其变为反面朝上;如果从左到右第 kk 枚硬币反面朝上,则将其变为正面朝上。

在 W!ʌ!k 开始玩游戏之前,Mivik 想考考 W!ʌ!k。Mivik 想让 W!ʌ!k 算出他总共会进行多少次这样的操作,或者是 W!ʌ!k 永远无法停止执行操作。

W!ʌ!k 很快解决了这个问题,但是心理比 yky 还变态的 Mivik 显然不会放过他。Mivik 进行了很多次操作,每次他翻转了一个区间的硬币,他要求 W!ʌ!k 算出他总共会进行多少次这样的操作,或者是 W!ʌ!k 永远无法停止执行操作。

请注意,W!ʌ!k 只是需要计算总共会进行多少次操作,而不会真正进行操作。

输入格式

输入共 (m+2)\left(m+2\right) 行。

第一行为两个非负整数 n,mn,m,其中 nn 表示 Mivik 的硬币的个数,mm 表示 Mivik 进行的翻转操作的次数。

第二行为一个只包含有 H\texttt HT\texttt T 的字符串。第 ii 个字符 sis_iH\texttt H 则表示从左到右第 ii 枚硬币初始时是正面朝上;sis_iT\texttt T 则表示从左到右第 ii 枚硬币初始时是反面朝上。

接下来 mm 行,每行两个正整数 li,ril_i,r_i,表示 Mivik 翻转了从左到右数 liril_i\sim r_i(包括 lil_irir_i)的硬币。

输出格式

输出 (m+1)\left(m+1\right) 行,分别表示在真正执行操作前后共 (m+1)\left(m+1\right) 个时刻开始 W!ʌ!k 总共会进行多少次这样的操作,或者是 W!ʌ!k 永远无法停止执行操作。如果某一时刻 W!ʌ!k 不能停止执行操作,则在对应行输出字符串 never\texttt{never}

2 2
TT
2 2
1 2

2
1
3

5 0
HTHTH

8

10 10
HTHHTHTHHH
9 9
5 5
10 10
7 7
6 6
9 9
4 4
9 9
7 7
2 2

19
30
27
40
33
38
27
28
37
40
47

提示

样例解释 #1

初始时两枚硬币都是反面朝上,因此如果 W!ʌ!k 从此刻开始执行操作, W!ʌ!k 会将编号为 22 的硬币翻转过来。操作后只有一枚硬币反面朝上,因此第 22 次操作会将编号为 11 的硬币翻转过来。在第 22 次操作后没有硬币反面朝上,因此 W!ʌ!k 不会再执行操作,总共会执行 22 次操作。

样例解释 #2

88 次操作分别翻转了第 2,1,2,3,4,3,2,12,1,2,3,4,3,2,1 枚硬币。

测试点约束

本题采用捆绑测试。

对于全部数据,有 1n,m1061\le n,m\le10^6si{H,T}s_i\in\left\{\texttt H,\texttt T\right\}1lirin1\le l_i\le r_i\le n

每个子任务的具体限制见下表:

子任务编号 分值 特殊限制
1 10 n3n\le3
2 20 n,m100n,m\le100
3 30 m10m\le10
4 20 li=ril_i=r_i
5

本题读入输出量较大,请使用较快的读入输出方式。