CF1186E Vus the Cossack and a Field

题目描述

哥萨克 Vus 有一个 $n \times m$ 的田地,这个田地由“0”和“1”组成。他正在用这个田地构建一个无限大的田地。构建方式如下: 1. 他将当前田地取反,得到一个新的田地。也就是说,新的田地中,原来是“0”的地方变成“1”,原来是“1”的地方变成“0”。 2. 将取反后的田地拼接到当前田地的右侧。 3. 将取反后的田地拼接到当前田地的下方。 4. 将当前田地拼接到右下角。 5. 重复上述过程。 例如,若初始田地为: $\begin{matrix} 1 & 0 \\ 1 & 1 \\ \end{matrix}$ 第一次迭代后,田地变为: $\begin{matrix} 1 & 0 & 0 & 1 \\ 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 1 & 1 \\ \end{matrix}$ 第二次迭代后,田地变为: $\begin{matrix} 1 & 0 & 0 & 1 & 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 0 & 0 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 & 1 & 0 & 0 & 1 \\ 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 & 1 & 0 & 0 & 1 \\ 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 \\ 1 & 0 & 0 & 1 & 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 0 & 0 & 0 & 1 & 1 \\ \end{matrix}$ 以此类推…… 我们将行从上到下编号为 $1$ 到无穷,列从左到右编号为 $1$ 到无穷。我们称子矩阵 $(x_1, y_1, x_2, y_2)$ 为所有满足 $x_1 \leq x \leq x_2$ 且 $y_1 \leq y \leq y_2$ 的格子 $(x, y)$ 组成的矩阵。 有时哥萨克需要查询某些子矩阵内所有数字的和。由于他现在很忙,所以请你帮他计算答案!

输入格式

第一行包含三个整数 $n$、$m$、$q$($1 \leq n, m \leq 1000$,$1 \leq q \leq 10^5$),分别表示初始矩阵的行数、列数和询问的数量。 接下来的 $n$ 行,每行包含 $m$ 个字符 $c_{ij}$($0 \leq c_{ij} \leq 1$),表示矩阵中的元素。 接下来的 $q$ 行,每行包含四个整数 $x_1$、$y_1$、$x_2$、$y_2$($1 \leq x_1 \leq x_2 \leq 10^9$,$1 \leq y_1 \leq y_2 \leq 10^9$),表示要查询的子矩阵左上角和右下角的坐标。

输出格式

对于每个询问,输出一个答案。

说明/提示

第一个样例的过程已在题目描述中给出。 由 ChatGPT 4.1 翻译