空间复杂度分析(这里是c++的空间):
1 Byte = 8 bit
1 KB= 1024 Byte
1 MB=1024*1024 Byte
1 GB=1024 * 1024 * 1024 Byte
int 4 Byte
char 1 Byte
double, long long 6Byte
bool 1 Byte
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt(),r=scanner.nextInt();
//int[][] g=new int[5010][5010];如果开两个数组的话大约需要200mb,(5010*5010*2*4)/(1024*1024)~=200mb
int[][] s=new int[5010][5010];//可以用一个数组存储
for(int i=0;i<n;i++) {
int x=scanner.nextInt();
int y=scanner.nextInt();
s[x+1][y+1]+=scanner.nextInt();
}
for(int i=1;i<=5000;i++) {
for(int j=1;j<=5000;j++) {
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+s[i][j];
}
}
int res=(int)1e-5;
for(int i=5000;i>=r;i--) {//最小边界从r开始
for(int j=5000;j>=r;j--) {
int sum=s[i][j]-s[i][j-r]-s[i-r][j]+s[i-r][j-r];
res=Math.max(res, sum);
}
}
System.out.println(res);