求助,WA#8,已参考前帖仍然未通过
查看原帖
求助,WA#8,已参考前帖仍然未通过
312820
Chinshyo楼主2021/9/24 23:53

求助各位大佬,为什么我加了特判还是不能通过,感谢

#include<bits/stdc++.h>
using namespace std;

const int M = 5010;
int s[M][M];

int main() {
    int n, m;
    cin >> n >> m;
    int x, y, v;
    int maxx = -1, maxy = -1;
    for(int i = 1; i <= n; i++) {
        cin >> x >> y;
        cin >> s[x][y];
        maxx = max(maxx, x);
        maxy = max(maxy, y);
    }
    if(m > maxx && m > maxy) {
        cout << s[maxx][maxy] << endl;
        return 0;
    }
    if(m == 0 || n == 0) {
        cout << 0 << endl;
        return 0;
    }
    for(int i = 1; i <= maxx; i++) {
        s[i][0] += s[i - 1][0]; 
    }
    for(int i = 1; i <= maxy; i++) {
        s[0][i] += s[0][i - 1];
    }
    for(int i = 1; i <= maxx; i++) {
        for(int j = 1; j <= maxy; j++) {
            s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
        }
    }   
    int ans = s[m - 1][m - 1];
    for(int i = m; i <= maxx; i++) {
        ans = max(ans, s[i][m - 1] - s[i - 1][m - 1]);
    }
    for(int i = m; i <= maxy; i++) {
        ans = max(ans, s[m - 1][i] - s[m - 1][i - 1]);
    }
    for(int i = m; i <= maxx; i++) {
        for(int j = m; j <= maxy; j++) {
            ans = max(ans, s[i][j] - s[i - m][j] - s[i][j - m] + s[i - m][j - m]);
        }
    }
    cout << ans << endl;
    system("pause");
    return 0;
}
2021/9/24 23:53
加载中...