#P16433. pm14929最大方阵和
pm14929最大方阵和
题目背景
深空观测站正在校准一块巨大的能量阵列。阵列中每个位置的能量值并不是逐格存储的,而是由一条长度为 的基础序列共同决定。为了寻找最强的局部能量区域,工程师需要在整个阵列中选出一个非空正方形区域,使其中所有数值之和尽可能大。
由于阵列规模可达 ,显然无法把它完整构造出来。你需要利用阵列的特殊结构完成计算。
题目描述
给定一个 的矩阵 。矩阵由一个长度为 的整数序列 构造,满足
其中下标均从 开始。
一个大小为 的正方形子矩阵,是由连续的 行和连续的 列组成的区域,其中 。正方形子矩阵不能为空。
请你求出矩阵 的所有非空正方形子矩阵中,元素总和的最大值。
序列 通过下面三个步骤得到。
第一步:生成初始序列
输入给出整数 、随机种子 、模数 和偏移量 。按照下面的伪代码生成 :
for i = 0..n-1:
B[i] = (s div 2^20) modulo q + o
s0 = (s * 621) modulo 2^51
s1 = (s * 825) modulo 2^51
s2 = (s * 494) modulo 2^51
s3 = (s * 23) modulo 2^51
s = s3
s = (s * 2^10 + s2) modulo 2^51
s = (s * 2^10 + s1) modulo 2^51
s = (s * 2^10 + s0 + 11) modulo 2^51
其中:
div表示整数除法,例如 ;modulo表示取模;- 是临时变量;
- 上述所有运算均可使用有符号 位整数安全完成。
生成出的每个 都位于 内。
第二步:修改序列
输入给出 次修改。第 次修改把
直接改为 。所有位置下标均从 开始。
第三步:构造矩阵
对于所有 ,定义
你不需要、也不应该显式构造整个矩阵 。
输入格式
第一行包含四个整数
n s q o
第二行包含一个整数 ,表示修改次数。
接下来 行,每行包含两个整数
x_i y_i
表示令 。
输出格式
输出一个整数,表示所有非空正方形子矩阵的最大元素和。
数据范围
对于所有测试数据:
- ;
- ;
- ;
- ;
- ;
- ;
- 。
答案保证可以使用有符号 位整数表示。
样例 1
输入
6 10000000014 20 -12
1
1 3
输出
28
说明
生成并修改后的序列为
对应矩阵为
8 7 -5 -3 9 6
7 6 -6 -4 8 5
-5 -6 -18 -16 -4 -7
-3 -4 -16 -14 -2 -5
9 8 -4 -2 10 7
6 5 -7 -5 7 4
右上角的 子矩阵元素和为
且不存在元素和更大的正方形子矩阵。
样例 2
输入
7 10000000029 20 -12
0
输出
12
样例 3
输入
10 42 40 -5
0
输出
2660