P16625 [GKS 2017 #D] Sherlock and Matrix Game
题目描述
今天,Sherlock 和 Watson 参加了一场讲座,讲座中介绍了矩阵。Sherlock 是那种对线性代数并不真正感兴趣的程序员,但他确实想到了一个与矩阵有关的问题来让 Watson 解决。
Sherlock 给了 Watson 两个一维数组 A 和 B,长度均为 $N$。他让 Watson 构造一个 $N$ 行 $N$ 列的矩阵,其中第 $i$ 行第 $j$ 列的元素为 A 的第 $i$ 个元素与 B 的第 $j$ 个元素的乘积。
记 $(x, y)$ 表示矩阵中第 $x$ 行(行号从 $0$ 开始,从上往下数)、第 $y$ 列(列号从 $0$ 开始,从左往右数)的格子。一个子矩阵由左下角格子 $(a, b)$ 和右上角格子 $(c, d)$ 定义,其中 $a \ge c$ 且 $d \ge b$,该子矩阵包含所有满足 $c \le i \le a$ 且 $b \le j \le d$ 的格子 $(i, j)$。子矩阵的和定义为该子矩阵中所有格子值的总和。
为了考验 Watson,Sherlock 给了他一个整数 $K$,要求他输出 Watson 的矩阵中所有子矩阵的和里第 $K$ 大的值,其中 $K = 1$ 对应最大的和。(不同的 $K$ 可能对应同一个和,即可能有多个子矩阵具有相同的和。)你能帮助 Watson 吗?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。每个测试用例由一行九个整数组成:$N$、$K$、$A_1$、$B_1$、$C$、$D$、$E_1$、$E_2$ 和 $F$。其中 $N$ 是数组 A 和 B 的长度;$K$ 是 Watson 需要输出的子矩阵和的排名;$A_1$ 和 $B_1$ 分别是数组 A 和 B 的第一个元素;其余五个值是生成数组元素的参数,生成方式如下:
首先定义 $x_1 = A_1$,$y_1 = B_1$,$r_1 = 0$,$s_1 = 0$。然后,对于 $i = 2$ 到 $N$,使用下面的递推式生成 $x_i$ 和 $y_i$:
- $x_i = (C \times x_{i-1} + D \times y_{i-1} + E_1) \bmod F$。
- $y_i = (D \times x_{i-1} + C \times y_{i-1} + E_2) \bmod F$。
进一步,对于 $i = 2$ 到 $N$,使用下面的递推式生成 $r_i$ 和 $s_i$:
- $r_i = (C \times r_{i-1} + D \times s_{i-1} + E_1) \bmod 2$。
- $s_i = (D \times r_{i-1} + C \times s_{i-1} + E_2) \bmod 2$。
对于所有 $i = 2$ 到 $N$,定义 $A_i = (-1)^{r_i} \times x_i$,$B_i = (-1)^{s_i} \times y_i$。
输出格式
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是题目描述中所定义的矩阵中第 $K$ 大的子矩阵和。
说明/提示
在样例 1 中,使用生成方法得到的数组 A 和 B 分别为 $[1, -3]$ 和 $[1, -3]$。因此构造出的矩阵为
$$\begin{aligned}
&[1, \ -3] \\
&[-3, \ 9]
\end{aligned}$$
所有可能的子矩阵和按从大到小排序为 $[9, 6, 6, 4, 1, -2, -2, -3, -3]$。由于 $K = 3$,答案为 $6$。
在样例 2 中,使用生成方法得到的数组 A 和 B 分别为 $[2]$ 和 $[2]$。因此构造出的矩阵为
$$\begin{aligned}
&[4]
\end{aligned}$$
由于 $K = 1$,答案为 $4$。
在样例 3 中,使用生成方法得到的数组 A 和 B 分别为 $[1, 0]$ 和 $[2, -1]$。因此构造出的矩阵为
$$\begin{aligned}
&[2, \ -1] \\
&[0, \ 0]
\end{aligned}$$
所有可能的子矩阵和按从大到小排序为 $[2, 2, 1, 1, 0, 0, 0, -1, -1]$。由于 $K = 3$,答案为 $1$。
### 限制条件
$1 \le T \le 20$。
$1 \le K \le \min(10^5, \text{所有可能的子矩阵个数})$。
$0 \le A_1 \le 10^3$。
$0 \le B_1 \le 10^3$。
$0 \le C \le 10^3$。
$0 \le D \le 10^3$。
$0 \le E_1 \le 10^3$。
$0 \le E_2 \le 10^3$。
$1 \le F \le 10^3$。
**小数据集(测试集 1 – 可见)**
$1 \le N \le 200$。
**大数据集(测试集 2 – 隐藏)**
$1 \le N \le 10^5$。
翻译由 DeepSeek V4 Pro 完成