Public Judge

pjudge

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100
[+19]

# 21861. 【NOIP Round #8】位集

Statistics

题目描述

定义大小为 m 的 bitset 为长度为 m 的 bool 数组。

对大小为 m 的 bitset 定义如下四种运算:

  • c=a and b:在这里,如果 ai=1bi=1,则 ci=1;否则 ci=0
  • c=a or b:在这里,如果 ai=1bi=1,则 ci=1;否则 ci=0
  • c=a xor b:在这里,如果 aibi 中恰好有一个为 1,则 ci=1;否则 ci=0
  • c=not a:在这里,如果 ai=0,则 ci=1;否则 ci=0

给定一个大小为 n 的 bitset 数组 s1,s2,,sn,编写程序来回答 k 个查询,每次查询给定 l,r,你需要使用以下公式计算 t

  • t=(sl and sl+1 and  and sr) xor (not (sl or sl+1 or  or sr))

t 中 1 的个数。

输入格式

第一行包含两个整数 nm (1n,m105; nm106)。接下来的 n 行描述了 n 个 bitset,每行由 m 个 0 或 1 组成,表示一个 bitset。

接下来的一行包含一个整数 k,表示查询的数量 (1k2×106)。

接下来的一行包含三个整数 x,y,z (1x,y,z109)。

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

  • a1=1
  • b1=n
  • 对于 i>1ai=(ai1x+qi1y+z)mod
  • 对于 i > 1b_i = (b_{i-1} \cdot y + q_{i-1} \cdot z + x) \bmod n + 1

其中,第 i 个询问的 l\min\{a_i,b_i\}r\max\{a_i,b_i\},公式里的 q_{i-1} 表示第 i-1 个询问的答案。

输出格式

输出一个整数表示所有查询答案的总和。

样例输入 1

4 10
1010110101
0101111001
1101101101
1011010000
4
10 5 4

样例输出 1

9

样例输入/输出 2~3

见下发文件。

样例解释

询问编号 l r 答案
1 1 4 1
2 3 4 3
3 2 4 2
4 1 3 3

数据范围与约定

对于所有数据,有:

  • 1 \le n,m \le 10^5
  • nm \le 10^6
  • 1 \le k \le 2 \times 10^6
  • 1 \le x,y,z \le 10^9

子任务:

子任务编号 特殊性质 分值
1 n,m\le 20,k \le 50 40
2 m=1 20
3 k \le 1 \times 10^5 20
4 y=z=0 10
5 10