全MLE,求调orz
查看原帖
全MLE,求调orz
817450
Calarence4楼主2023/11/17 11:28
#include <bits/stdc++.h>
using namespace std;
const int MaxN = 5e3 + 5;
int a[MaxN][MaxN], s[MaxN][MaxN];
int ans = -1;
int n, m, max_x = -1, max_y = -1;
int main() {
    memset(a, 0, sizeof(a));
    memset(s, 0, sizeof(s));
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++) {
        int x, y, z;
        scanf("%d%d%d", &x, &y, &z);
        x++, y++;
        a[x][y] += z;  // 从一开始
        max_x = max(max_x, x);
        max_y = max(max_y, y);
    }
    for (int i = 1; i <= max_x; i++) {
        for (int j = 1; j <= max_y; j++) {
            s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j];
        }
    }
    for (int i = m; i <= max_x; i++) {
        for (int j = m; j <= max_y; j++) {
            int temp =
                s[i][j] - s[i - m][j] - s[i][j - m] + s[i-m][j-m];
            ans = max(ans, temp);
        }
    }
    /* for (int i = 1; i <= max_x; i++) {
        for (int j = 1; j <= max_y; j++) {
            printf("%lld ", s[i][j]);
        }
        printf("\n");
    } */
    printf("%d", ans);
    return 0;
}
2023/11/17 11:28
加载中...