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