#CSP1017C. 位集

位集

题目描述

定义大小为 mmbitset 为长度为 mmbool 数组。

对大小为 mmbitset 定义如下四种运算:

  • c=a and bc = a \text{ and } b:如果 ai=1a_i = 1bi=1b_i = 1,则 ci=1c_i = 1;否则 ci=0c_i = 0
  • c=a or bc = a \text{ or } b:如果 ai=1a_i = 1bi=1b_i = 1,则 ci=1c_i = 1;否则 ci=0c_i = 0
  • c=a xor bc = a \text{ xor } b:如果 aabb 中恰好有一个为 11,则 ci=1c_i = 1;否则 ci=0c_i = 0
  • c=not ac = \text{not } a:如果 ai=0a_i = 0,则 ci=1c_i = 1;否则 ci=0c_i = 0

给定大小为 nnbitset 数组 s1,s2,,sns_1, s_2, \ldots, s_n,编写程序回答 kk 个查询。每次查询给定 l,rl, r,需计算: $t = (s_l \text{ and } s_{l+1} \text{ and } \ldots \text{ and } s_r) \text{ xor } (\text{not } (s_l \text{ or } s_{l+1} \text{ or } \ldots \text{ or } s_r))$ 求 tt11 的个数。

输入格式

第一行包含整数 nnmm1<n,m1051 < n, m \leq 10^5nm106n \cdot m \leq 10^6)。
接下来 nn 行,每行 mm0/10/1 字符表示一个 bitset
然后一行 kk(查询数量,1k2×1061 \leq k \leq 2 \times 10^6)。
最后一行三个整数 x,y,zx, y, z1x,y,z1091 \leq x, y, z \leq 10^9)。

查询是通过以x,y,zx, y, z为参数的伪随机算法生成的,具体来说,考虑生成长度为kk的序列a,ba, b

  • a1=1a_1 = 1
  • b1=nb_1 = n
  • 对于i>1i > 1,$a_i = (a_{i-1} \cdot x + q_{i-1} \cdot y + z) \ (\text{mod} \ n) + 1$。
  • 对于i>1i > 1,$b_i = (b_{i-1} \cdot y + q_{i-1} \cdot z + x) \ (\text{mod} \ n) + 1$。

其中,第ii个询问的llmin(ai,bi)\min(a_i, b_i)rrmax(ai,bi)\max(a_i, b_i),公式里的qi1q_{i-1}表示第i1i-1个询问的答案。

输出格式

输出所有查询答案的总和。

样例1

输入

4 10
1010110101
0101111001
1101101101
1011010000
4
10 5 4

输出

9

样例解释

对于询问 1:1: l=1,r=4,l = 1, r = 4, 答案为 11;

对于询问 2:2: l=3,r=4,l = 3, r = 4, 答案为 33;

对于询问 3:3: l=2,r=4,l = 2, r = 4, 答案为 22;

对于询问 4:4: l=1,r=3,l = 1, r = 3, 答案为 33;

数据范围与约定

  • 1<n,m1051 < n, m \leq 10^5nm106n \cdot m \leq 10^6
  • 1k2×1061 \leq k \leq 2 \times 10^6
  • 1x,y,z1091 \leq x, y, z \leq 10^9

子任务

子任务 特殊性质 分值
1 n,m20n,m \leq 20k50k \leq 50 20
2 m=1m = 1
3 k105k \leq 10^5
4 y=z=0y = z = 0 10
5 30