题意
传送门 NC 20032
题解
二维前缀和维护矩形区域的目标数,因为不计入边覆盖的点,故边长为 R R R 的正方形对应最大覆盖点集为 R × R R\times R R×R 。枚举激光炸弹可覆盖的可能解对应的矩形区域,更新答案即可。
#include <bits/stdc++.h>
using namespace std;
#define maxn 5005
int sum[maxn][maxn];
int main()
{
int n, R;
scanf("%d%d", &n, &R);
int mx = R, my = R;
for (int i = 0; i < n; i++)
{
int x, y, v;
scanf("%d%d%d", &x, &y, &v);
++x, ++y;
sum[x][y] = v;
mx = max(mx, x), my = max(my, y);
}
for (int i = 1; i <= mx; i++)
{
for (int j = 1; j <= my; j++)
{
sum[i][j] += sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
}
}
int res = 0;
for (int i = R; i <= mx; i++)
{
for (int j = R; j <= my; j++)
{
res = max(res, sum[i][j] - sum[i - R][j] - sum[i][j - R] + sum[i - R][j - R]);
}
}
printf("%d\n", res);
return 0;
}