1 条题解
-
0
#include #include #include using namespace std;
int main() { int n, m, s, t; cin >> n >> m >> s >> t;
vector<vector<int>> a(n + 1, vector<int>(m + 1, 0)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } // 二维前缀和 vector<vector<int>> sum(n + 1, vector<int>(m + 1, 0)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { sum[i][j] = a[i][j] + sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1]; } } int minSum = INT_MAX; // 枚举所有 s*t 子矩阵的左上角 for (int i = 1; i + s - 1 <= n; i++) { for (int j = 1; j + t - 1 <= m; j++) { int x2 = i + s - 1; int y2 = j + t - 1; int subSum = sum[x2][y2] - sum[i-1][y2] - sum[x2][j-1] + sum[i-1][j-1]; if (subSum < minSum) { minSum = subSum; } } } cout << minSum << endl; return 0;}
- 1
信息
- ID
- 14535
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者