秋招模拟赛第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 的矩阵,要求从这个矩阵中选择出一个正方形,使得正方形中的数之和与剩下的数之和的差值绝对值尽可能小。
你能帮帮小红吗?
第一行,两个正整数 n 和 m(1≤n,m≤1000) ,表示矩阵的行数和列数
接下来的 n 行,每行有 m 个正整数,第 i 行的第 j 个正整数为 ai,j(1≤ai,j≤10000)
一个整数,表示正方形中的数之和与剩下的数之和的差值绝对值的最小值。
输入
3 3
9 9 8
2 4 4
3 5 3
输出
1
说明
选择 a[1][1], a[1][2], a[2][1], a[2][2] 构成的长度为 2 的正方形,这些数和为 24 ,剩下的数和为 23 ,此时差值绝对值最小,为 1 。