题意:
有一个长度为 n 的 a 数组和长度为 m 的 b 数组,让这个一维矩阵相乘得到二维的矩阵,求最大子矩阵的和小于或等于 x。
题解:
有一道原题,区间范围是1000,时间复杂度是O(n^3),用在这里会超时。(Hihocoder 1502: 最大子矩阵)
我们可以发现一个规律:一个子矩阵的和就是 (a[i]+a[i+1]+...+a[j])*(b[i]+b[i+1]+...+b[j])。
所以我们可以使用前缀和求一个子矩阵的和,我们要求的是子矩阵的大小,所以设一个数组存长度为 1...n 的 a 和 b 的前缀和,再遍历求最大的大小。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include