luogu#P10012. [集训队互测 2023] 落日珊瑚

[集训队互测 2023] 落日珊瑚

题目描述

给一个长度为 nn、包含方括号和圆括号的括号串,定义一个串 SS 合法,当且仅当以下几种情况之一:

  1. SS 为空串;
  2. S=[T]S= [T]TT 合法;
  3. S=(T)S= (T)TT 合法;
  4. S=TUS=TUT,UT, U 合法。

比如 ()[()] 都是一个合法的括号串,但 [()]()) 不是。

定义一个操作叫选择一个区间 [l,r][l, r],并把所有在区间里的字符从方括号变圆括号,从圆括号变方括号。

定义一个括号串的权值 val(S)val(S) 为:如果这个括号串能通过操作变成合法,就是最小的操作次数;否则是 00

给出 qq 次修改查询,有以下两种可能。

  1. 修改,给出一个区间 [l,r][l, r] 把所有在区间里的字符从方括号变圆括号,从圆括号变方括号。
  2. 查询,给出一个区间 [l,r][l, r],求 [l,r][l,r]val(s[l,r])\sum_{[l', r'] \in [l, r]} val(s[l', r'])

输入格式

第一行四个整数 n,q,T,subtaskidn, q, T, subtaskid,分别表示字符串长度,操作次数,强制在线的参数,子任务编号。

接下来一行一个长度为 nn 的字符串。

接下来 qq 行,每行三个数 opt,L,Ropt, L, R,表示一次操作。

强制在线,真实的 $l = \min((L + T \cdot lastans) \bmod n + 1, (R + T \cdot lastans) \bmod n + 1)$,$r = \max((L + T \cdot lastans) \bmod n + 1, (R + T \cdot lastans) \bmod n + 1)$ 其中 lastanslastans 是上一次询问的答案,如果没有上次询问则为 00

请注意,即使是离线的部分分,也有可能 LlL \neq lRrR \neq r

输出格式

若干行,每次询问输出一个答案。

10 10 0 0
[)]]((()][
2 10 6
1 6 6
1 3 6
2 5 7
2 3 3
2 10 4
1 7 1
2 4 4
2 4 2
1 5 5

1
0
0
1
0
0

20 20 0 0
[)])[)[](()((]]([[)[
2 9 3
2 8 10
1 4 15
1 5 9
1 16 10
1 18 20
1 1 8
2 8 9
1 2 16
1 10 13
1 16 9
1 8 1
2 20 7
2 14 11
1 3 16
1 15 18
1 6 4
2 10 7
2 2 4
2 13 2

2
0
0
1
2
1
0
4

提示

对于所有数据,1n,q51051 \le n, q \le 5\cdot 10^50T1090 \le T \le 10^91l,rn1 \le l, r \le n1opt21 \le opt \le 2

子任务编号 n,qn, q \le 特殊性质 分值
1 100100 E 5
2 60006000
3 10510^5 AE
4 21052\cdot 10^5 BE
5 CDE
6 CE 10
7 DE
8 E
9 20
10 51055\cdot 10^5 25

A 性质:每个位置有 14\frac{1}{4} 的概率为方圆左右括号。

B 性质:保证没有修改。

C 性质:保证修改为单点修改。

D 性质:保证查询区间 [l,r][l, r] 满足 S[l,r]S[l, r] 经过若干次操作可以变成合法串,且不存在另一个 k[l,r)k \in [l, r),使得 S[l,k]S[l, k] 可以经过若干次操作变成合法串。

E 性质:保证 T=0T = 0,即可以离线。