题目描述
对于一个长度为 n(n≥3)的 01 串 S=s1…sn,定义变换 T=f(S)=t1…tn(题目未明确变换 f 具体规则,结合样例推测为特定逻辑变换)。定义变换 f 的不动点如下:若 01 串 T 满足 f(T)=T,则称 T 为变换 f 的不动点。
记 fk(S) 为 S 经过 k 次变换得到的串,特别地,记 f0(S)=S。求最小的自然数 k,使得 fk(S) 为变换 f 的不动点(即满足 fk+1(S)=fk(S) 的最小自然数 k),且题目保证一定存在该自然数 k。
小 Z 增加 q 次修改操作,第 i(1≤i≤q)次修改会给定两个正整数 li,ri(1≤li≤ri≤n),将区间 [li,ri] 内所有原有 0 替换为 1,所有原有 1 替换为 0。需对初始时及每次修改后的字符串 S,求出上述最小自然数 k。
输入格式
- 第一行包含两个非负整数 c,t,分别表示测试点编号与测试数据组数,c=0 表示该测试点为样例。
- 每组测试数据:
- 第一行包含两个正整数 n,q,分别表示 S 的长度和修改次数。
- 第二行包含一个长度为 n 的 01 串 S=s1…sn,表示初始时的字符串。
- 第 i+2(1≤i≤q)行包含两个正整数 li,ri,表示一次修改操作。
输出格式
对于每组测试数据,设初始时的答案为 k0,第 i(1≤i≤q)次修改后的答案为 ki,输出一行一个正整数,表示 ⊕i=0q((i+1)×ki),其中 ⊕ 表示二进制按位异或。
样例1
输入
0 2
5 2
11010
3 3
2 2
7 3
1010100
7 7
2 4
1 2
输出
2
4
样例1解释
该样例共包含两组测试数据:
- 第一组测试数据:
- 初始时,S=11010,f(S)=11100,f2(S)=11110,f3(S)=f4(S)=11111,因此 k0=3。
- 第一次操作后,S=11110,f(S)=f2(S)=11111,因此 k1=1。
- 第二次操作后,S=10110,f(S)=f2(S)=10011,因此 k2=1。
- 答案为 $(1 \times 3) \oplus (2 \times 1) \oplus (3 \times 1) = 3 \oplus 2 \oplus 3 = 2$。
- 第二组测试数据:
- 初始时,S=1010100,k0=1。
- 第一次操作后,S=1010101,k1=1。
- 第二次操作后,S=1101101,k2=5。
- 第三次操作后,S=0001101,k3=2。
- 答案为 $(1 \times 1) \oplus (2 \times 1) \oplus (3 \times 5) \oplus (4 \times 2) = 4$。
数据范围
- 3≤n≤4×105,1≤q≤4×105。
- 设 N,Q 分别为单个测试点内所有测试数据的 n,q 的和,N≤8×105,Q≤8×105。
- 对于所有 1≤i≤n,均有 si∈{0,1}。
- 对于所有 1≤i≤q,均有 1≤li≤ri≤n。
| 测试点编号 |
n,q≤ |
N,Q≤ |
特殊性质 |
| 1 ~ 3 |
200 |
103 |
A |
| 4 ~ 6 |
无 |
| 7, 8 |
5000 |
104 |
A |
| 9 ~ 11 |
无 |
| 12 |
105 |
2×105 |
A |
| 13, 14 |
B |
| 15, 16 |
无 |
| 17 ~ 19 |
4×105 |
8×105 |
C |
| 20 |
无 |
特殊性质说明:
- A:保证初始时及每次修改后,存在整数 p∈[2,n] 满足 s1=s2=⋯=sp=1 且 sp+1=⋯=sn=0。
- B:保证对于所有 1≤i≤q,均有 li=1,ri=n。
- C:保证对于所有 1≤i≤q,均有 li=1,且 r1≤r2≤⋯≤rq。