D. 第1题-方域均衡
第1题-方域均衡
秋招模拟赛第40场|2023.09.02-京东
- Status
- Done
- Rule
- IOI
- Problem
- 4
- Start at
- 2023-9-7 19:00
- End at
- 2023-9-7 20:30
- Duration
- 1.5 hour(s)
- Host
- Partic.
- 22
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
这个问题其实就是在求一个靠近 2sum 的最近的数,不过这个数是由正方形中的数的和组成的。
那么可以考虑枚举正方形的左上角端点,然后二分正方形的边长,找到一个正方形数之和大于等于 2sum 的最小边长。
而这里判断时需要快速求出一个正方形内数的和,可以通过预处理二维前缀和,然后查询可以O(1)计算出。
时间复杂度:O(nmlogn)
在一个 n×m 的整数矩阵中,你需要挑选一个行数和列数相等的子矩阵(即正方形子矩阵)。记该子矩阵内所有元素之和为 Sin,矩阵其余部分所有元素之和为 Sout。你的目标是让 ∣Sin−Sout∣ 尽可能小。请你计算这个最小可能值。
数据范围:矩阵的行数和列数均不超过 1000,矩阵中的每个数值均为不超过 10000 的正整数。
第一行包含两个正整数 n 和 m(1≤n,m≤1000),分别表示矩阵的行数和列数。 接下来 n 行,每行包含 m 个整数(数值范围 1 到 10000),表示矩阵对应位置的元素。
输出一个整数,表示能达到的最小差值 ∣Sin−Sout∣。
输入
1 1
5
输出
5
说明
矩阵仅包含一个元素 5,因此只能选择边长 1 的正方形子矩阵。此时子矩阵和 Sin=5,矩阵其余部分和 Sout=0,差值 ∣Sin−Sout∣=∣5−0∣=5。这也是题目边界情况的最小可能值。
输入
3 3
1 1 1
1 1 1
1 1 1
输出
1
说明
矩阵所有元素均为 1,总和为 9。记正方形子矩阵的边长为 k,则子矩阵和 Sin=k2,其余部分和 Sout=9−k2。
因此最小差值出现在 k=2 时,结果为 1。
输入
2 3
1 2 3
4 5 6
输出
3
说明
矩阵总和为 21。可能的正方形子矩阵边长最大为 min(2,3)=2。
考虑所有边长 2 的正方形子矩阵:
1,2,4,5,和 Sin=12,Sout=9,差值 ∣12−9∣=3;2,3,5,6,和 Sin=16,Sout=5,差值 ∣16−5∣=11。边长 1 的子矩阵和均不超过 6,与另一半的差值均大于 3。因此最小差值为 3。
输入
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出
10
说明
矩阵元素为 1 到 16 的递增序列,总和 =136。
考虑边长为 3 的正方形子矩阵,共有四个可能位置:
边长为 2 的子矩阵和最大为 54,差值均大于 10;边长为 4 的整个矩阵差值为 136。因此最小差值为 10。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.