A59729.[NOI2025] 三目运算符
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:512MB
题目描述
对于一个长度为 n (n≥3) 的 01 串 S=s1…sn,定义变换 T=f(S)=t1…tn 如下:
ti=⎩⎨⎧si,si,si−1,i≤2,i≥3 且 si−2=0,i≥3 且 si−2=1.
定义变换 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 使得 fk(S) 为变换 f 的不动点。
小 Z 觉得这个问题过于简单,因此他增加了 q 次修改操作。第 i (1≤i≤q) 次修改会给定两个正整数 li,ri (1≤li≤ri≤n),然后将区间 [li,ri] 内的所有原有的 0 替换为 1,所有原有的 1 替换为 0。你需要对初始时及每次修改后的字符串 S,求出最小的自然数 k,使得 fk(S) 为变换 f 的不动点。
输入格式
本题包含多组测试数据。
输入的第一行包含两个非负整数 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
输出#1
2 4
说明/提示
说明/提示
该样例共包含两组测试数据。
对于第一组测试数据:
- 初始时,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。
故答案为 ⨁i=0q((i+1)×ki)=(1×3)⊕(2×1)⊕(3×1)=3⊕2⊕3=2。
对于第二组测试数据:
- 初始时,S=1010100,k0=1;
- 第一次操作后,S=1010101,k1=1;
- 第二次操作后,S=1101101,k2=5;
- 第三次操作后,S=0001101,k3=2。
故答案为 ⨁i=0q((i+1)×ki)=(1×1)⊕(2×1)⊕(3×5)⊕(4×2)=4。
【样例 2】
该样例满足测试点 1 ~ 3 的约束条件。
【样例 3】
该样例满足测试点 4 ~ 6 的约束条件。
【样例 4】
该样例满足测试点 13、14 的约束条件。
【样例 5】
该样例满足测试点 17 ~ 19 的约束条件。
【数据范围】
设 N,Q 分别为单个测试点内所有测试数据的 n,q 的和。对于所有测试数据,保证:
- 1≤t≤5;
- 3≤n≤4×105, N≤8×105;
- 1≤q≤4×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 | 200 | 103 | 无 |
7,8 | 5,000 | 104 | A |
9∼11 | 5,000 | 104 | 无 |
12 | 105 | 2×105 | A |
13,14 | 105 | 2×105 | B |
15,16 | 105 | 2×105 | 无 |
17∼19 | 4×105 | 8×105 | C |
20 | 4×105 | 8×105 | 无 |
特殊性质 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。