题目描述
输入输出格式
输入格式:
输入文件名为input.txt
输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi 。
输出格式:
输出文件名为output.txt
输出文件仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过32767)。
输入输出样例
输入样例#1:
2 10 0 11 1 1
输出样例#1:
1 二维前缀和板子题 我要说的是一个cin输入问题,此题不能cin>>a>>b>>sum[a+1][b+1] 我也不知道为什么。。。反正wa了我10多次才发现这个问题
#includeusing namespace std;typedef long long ll;#define inf 2147483647const ll INF = 0x3f3f3f3f3f3f3f3fll;#define ri register inttemplate inline T min(T a, T b, T c){ return min(min(a, b), c);}template inline T max(T a, T b, T c){ return max(max(a, b), c);}template inline T min(T a, T b, T c, T d){ return min(min(a, b), min(c, d));}template inline T max(T a, T b, T c, T d){ return max(max(a, b), max(c, d));}#define pi acos(-1)#define me(x, y) memset(x, y, sizeof(x));#define For(i, a, b) for (int i = a; i <= b; i++)#define FFor(i, a, b) for (int i = a; i >= b; i--)#define mp make_pair#define pb push_backconst int maxn = 100005;#define mod 100003const int N=100005;// name*******************************int sum[5055][5055];int n,x;int ans=0;// function******************************int query(int x1,int y1,int x2,int y2){ return sum[x1][y1]-sum[x2-1][y1]-sum[x1][y2-1]+sum[x2-1][y2-1];}//***************************************int main(){// freopen("outout.txt","r",stdin); cin>>n>>x; int a,b,vi; For(i,1,n) { cin>>a>>b; cin>>sum[a+1][b+1]; } For(i,1,5001) { For(j,1,5001) { sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]; if(i-x+1>=1&&j-x+1>=1) ans=max(ans,query(i,j,i-x+1,j-x+1)); } } cout<