91分求助!!!
查看原帖
91分求助!!!
1133645
mazhemg123楼主2024/4/10 00:05
#include<iostream>
#include<string.h>
#include<string>
#include<vector>
#include<math.h>
#include<map>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stack>
#include<set>
#include<list>
//#include"big_integer_add.h"高精度加法
//#include <numeric>
using namespace std;
#define ll long long
#define ld long double
#define IOS                           \
   ios_base::sync_with_stdio(false);  \
   cin.tie(nullptr);                  \
   cout.tie(nullptr);                 \
const ll INF = 1e18; // 初始化一个较大的数作为无穷大 
const ll N = 1e8 + 10;
ll Map[5005][5005];

int n, r;
int main() {
    IOS;
    cin >> n >> r;
    int x, y, w;
    int maxx=-1;
    int maxy=-1;
    while (n--) {
        cin >> x >> y >> w;
        x++; y++;
        maxx=max(maxx,x);
        maxy=max(maxy,y);
        Map[x][y] += w;
    }
    for (int i = 1; i <= maxx+1; i++) {
        for (int j = 1; j <= maxy+1; j++) {
            Map[i][j] = Map[i - 1][j] + Map[i][j - 1] - Map[i - 1][j - 1] + Map[i][j];
        }
    }
    ll maxn = -1;
    for (int i = 1; i <= maxx; i++) {
        for (int j = 1; j <= maxy; j++) {
            int a = i + r - 1, b = j + r - 1;
            if (a < 1 || a>maxx || b < 1 || b>maxy)continue;
            maxn = max(Map[a][b] - Map[a][j - 1] - Map[i - 1][b] + Map[i - 1][j - 1], maxn);
        }
    }
    cout << maxn;




}
2024/4/10 00:05
加载中...