#P16625. [GKS 2017 #D] Sherlock and Matrix Game

    ID: 18981 远端评测题 5000ms 1024MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>2017堆可持久化线段树ST 表Google Kick Start

[GKS 2017 #D] Sherlock and Matrix Game

题目描述

今天,Sherlock 和 Watson 参加了一场讲座,讲座中介绍了矩阵。Sherlock 是那种对线性代数并不真正感兴趣的程序员,但他确实想到了一个与矩阵有关的问题来让 Watson 解决。

Sherlock 给了 Watson 两个一维数组 A 和 B,长度均为 NN。他让 Watson 构造一个 NN 行 NN 列的矩阵,其中第 ii 行第 jj 列的元素为 A 的第 ii 个元素与 B 的第 jj 个元素的乘积。

记 (x,y)(x, y) 表示矩阵中第 xx 行(行号从 00 开始,从上往下数)、第 yy 列(列号从 00 开始,从左往右数)的格子。一个子矩阵由左下角格子 (a,b)(a, b) 和右上角格子 (c,d)(c, d) 定义,其中 a≥ca \ge c 且 d≥bd \ge b,该子矩阵包含所有满足 c≤i≤ac \le i \le a 且 b≤j≤db \le j \le d 的格子 (i,j)(i, j)。子矩阵的和定义为该子矩阵中所有格子值的总和。

为了考验 Watson,Sherlock 给了他一个整数 KK,要求他输出 Watson 的矩阵中所有子矩阵的和里第 KK 大的值,其中 K=1K = 1 对应最大的和。(不同的 KK 可能对应同一个和,即可能有多个子矩阵具有相同的和。)你能帮助 Watson 吗?

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例由一行九个整数组成:NN、KK、A1A_1、B1B_1、CC、DD、E1E_1、E2E_2 和 FF。其中 NN 是数组 A 和 B 的长度;KK 是 Watson 需要输出的子矩阵和的排名;A1A_1 和 B1B_1 分别是数组 A 和 B 的第一个元素;其余五个值是生成数组元素的参数,生成方式如下:

首先定义 x1=A1x_1 = A_1,y1=B1y_1 = B_1,r1=0r_1 = 0,s1=0s_1 = 0。然后,对于 i=2i = 2 到 NN,使用下面的递推式生成 xix_i 和 yiy_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=2i = 2 到 NN,使用下面的递推式生成 rir_i 和 sis_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=2i = 2 到 NN,定义 Ai=(−1)ri×xiA_i = (-1)^{r_i} \times x_i,Bi=(−1)si×yiB_i = (-1)^{s_i} \times y_i。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是题目描述中所定义的矩阵中第 KK 大的子矩阵和。

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 分别为 [1,−3][1, -3] 和 [1,−3][1, -3]。因此构造出的矩阵为

$$\begin{aligned} &[1, \ -3] \\ &[-3, \ 9] \end{aligned}$$

所有可能的子矩阵和按从大到小排序为 [9,6,6,4,1,−2,−2,−3,−3][9, 6, 6, 4, 1, -2, -2, -3, -3]。由于 K=3K = 3,答案为 66。

在样例 2 中,使用生成方法得到的数组 A 和 B 分别为 [2][2] 和 [2][2]。因此构造出的矩阵为

[4]\begin{aligned} &[4] \end{aligned}

由于 K=1K = 1,答案为 44。

在样例 3 中,使用生成方法得到的数组 A 和 B 分别为 [1,0][1, 0] 和 [2,−1][2, -1]。因此构造出的矩阵为

$$\begin{aligned} &[2, \ -1] \\ &[0, \ 0] \end{aligned}$$

所有可能的子矩阵和按从大到小排序为 [2,2,1,1,0,0,0,−1,−1][2, 2, 1, 1, 0, 0, 0, -1, -1]。由于 K=3K = 3,答案为 11。

限制条件

1≤T≤201 \le T \le 20。

1≤K≤min⁡(105,所有可能的子矩阵个数)1 \le K \le \min(10^5, \text{所有可能的子矩阵个数})。

0≤A1≤1030 \le A_1 \le 10^3。

0≤B1≤1030 \le B_1 \le 10^3。

0≤C≤1030 \le C \le 10^3。

0≤D≤1030 \le D \le 10^3。

0≤E1≤1030 \le E_1 \le 10^3。

0≤E2≤1030 \le E_2 \le 10^3。

1≤F≤1031 \le F \le 10^3。

小数据集(测试集 1 – 可见)

1≤N≤2001 \le N \le 200。

大数据集(测试集 2 – 隐藏)

1≤N≤1051 \le N \le 10^5。

翻译由 DeepSeek V4 Pro 完成