#CF2269D. 香肠!全是肉 / What a SauSaGe! It's All Meat

香肠!全是肉 / What a SauSaGe! It's All Meat

题目描述

在香肠之城,一共有 nn 种不同口味的香肠。香肠之城的女王 Reyhaneh 在皇家仓库中存放了 aia_i(ai<16a_i<16)根第 ii 种口味的香肠。

随着时间推移,仓库会经历 qq 次修改操作。每次修改给出 (p,x)(p,x),含义是将仓库中第 pp 种口味香肠的数量改为 xx(即 ap:=xa_p := x)。

Reyhaneh 可以对香肠进行任意次操作(可以是0次):

  • 选定下标 1≤i<n1 \le i < n 和整数 1≤k≤51 \le k \le 5,将 ai,ai+1a_i,a_{i+1} 替换为 ai⊕(3⋅k)a_i \oplus (3\cdot k) 与 ai+1⊕(3⋅k)a_{i+1} \oplus (3\cdot k),其中 ⊕\oplus 代表按位异或。

在香肠之城,如果某口味香肠的数量可以被 33 整除,就称它为全肉香肠。三位著名香肠评论家 Shafi、Shafaghi、Ghaffari 只喜欢全肉口味。

在所有修改执行前,以及每一次修改完成之后,你都需要回答:如果 Reyhaneh 以最优方式执行任意次操作,最多能让多少种香肠口味满足三位评论家的喜好?

注意: 为求答案所做的操作只是假想操作,不会改变数组,不影响后续询问。但是 qq 次仓库修改(ap:=xa_p:=x)是永久生效的。

输入格式

本题包含多组测试数据。第一行一个整数 tt(1≤t≤1041 \le t \le 10^4),代表测试数据组数。接下来是每组测试数据描述。

每组测试数据第一行包含两个整数 n,qn,q(2≤n≤2⋅1052 \le n \le 2\cdot 10^5,0≤q≤2⋅1050 \le q \le 2\cdot 10^5),分别代表香肠口味数量与修改次数。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n(0≤ai<160 \le a_i <16),代表初始每种口味香肠数量。

之后 qq 行,每行两个整数 p,xp,x(1≤p≤n1 \le p \le n,0≤x<160 \le x<16),表示将 apa_p 修改为 xx。

保证所有测试数据的 nn 之和不超过 2⋅1052\cdot 10^5。 保证所有测试数据的 qq 之和不超过 2⋅1052\cdot 10^5。

输出格式

对于每组测试数据,输出 q+1q+1 个整数。第一个整数代表初始数组对应的答案,后面 qq 个整数依次是每次修改后的答案。

3
2 1
10 3
1 0
3 3
15 1 5
3 0
1 10
2 0
4 0
1 2 3 4
2 2 
2 2 2 3 
1 

说明

第一组测试数据,初始数组是 [10,3][10,3]。选取 i=1,k=1i=1,k=1(异或 33),得到 [10⊕3,3⊕3]=[9,0][10 \oplus 3,3 \oplus 3]=[9,0],99 和 00 都可以被 33 整除。修改之后数组变为 [0,3][0,3],两个元素本身就可以被 33 整除,因此两种状态答案都是 22。

第二组测试数据,初始数组是 [15,1,5][15,1,5]。选取 i=2,k=3i=2,k=3(异或 99),得到 [15,1⊕9,5⊕9]=[15,8,12][15,1 \oplus 9,5 \oplus 9]=[15,8,12],1515 和 1212 可被 33 整除,答案为 22。

第一次修改后数组 [15,1,0][15,1,0],依旧有两个元素(15,015,0)可被 33 整除,答案为 22。

第二次修改后数组 [10,1,0][10,1,0],选取 i=1,k=3i=1,k=3(异或 99)得到 [10⊕9,1⊕9,0]=[3,8,0][10 \oplus 9,1 \oplus 9,0]=[3,8,0],33 和 00 可被 33 整除,答案仍然是 22。

原题链接

原题链接