#P12888. 【NOIP Round #8】位集
【NOIP Round #8】位集
题目描述
定义大小为 的 bitset 为长度为 的 bool 数组。
对大小为 的 bitset 定义如下四种运算:
- :在这里,如果 且 ,则 ;否则 。
- :在这里,如果 或 ,则 ;否则 。
- :在这里,如果 和 中恰好有一个为 ,则 ;否则 。
- :在这里,如果 ,则 ;否则 。
给定一个大小为 的 bitset 数组 ,编写程序来回答 个查询,每次查询给定 ,你需要使用以下公式计算 :
- $t=(s_l \space \text{and}\space s_{l+1} \space \text{and } \cdots \text{ and } s_r) \text{ xor } (\text{not }(s_l \text{ or } s_{l+1} \text{ or } \cdots \text{ or } s_r))$
求 中 1 的个数。
输入格式
第一行包含两个整数 和 (; )。接下来的 行描述了 个 bitset,每行由 个 0 或 1 组成,表示一个 bitset。
接下来的一行包含一个整数 ,表示查询的数量 ()。
接下来的一行包含三个整数 ()。
查询是通过以 为参数的伪随机算法生成的,具体来说,考虑生成长度为 的序列 :
- 。
- 。
- 对于 ,$a_i = (a_{i-1} \cdot x + q_{i-1} \cdot y + z) \bmod n + 1$。
- 对于 ,$b_i = (b_{i-1} \cdot y + q_{i-1} \cdot z + x) \bmod n + 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$ | $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$ |