题目描述
输入输出格式
输入格式:
输入文件名为input.txt
输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi 。
输出格式:
输出文件名为output.txt
输出文件仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过32767)。
输入输出样例
输入样例#1:
2 1
0 0 1
1 1 1
输出样例#1:
1
.
.
.
.
.
分析
对于这道题,我们可以直接用二维前缀和来做
设f[i][j]表示从1,1到i,j这个矩形的总和
则有f[i][j]=f[i-1][j]+f[i][j-1]+x-f[i-1][j-1]
.
.
.
.
.
程序:
#include<iostream>
using namespace std;
int a[5002][5002],x,y,w,ans;
int main()
{
int n,r;
cin>>n>>r;
for(int i=1;i<=n;i++)
{
cin>>x>>y>>w;
a[x+1][y+1]=w;
}
for(int i=1;i<=5001;i++)
for(int j=1;j<=5001;j++)
a[i][j]=a[i-1][j]+a[i][j-1]+a[i][j]-a[i-1][j-1];
for(int i=0;i<5001-r;i++)
for(int j=0;j<5001-r;j++)
ans=max(ans,a[i+r][j+r]-a[i+r][j]-a[i][j+r]+a[i][j]);
cout<<ans;
return 0;
}