洛谷P2280 [HNOI2003]激光炸弹

题目描述
这里写图片描述

输入输出格式

输入格式:
输入文件名为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;
}
原文地址:https://www.cnblogs.com/YYC-0304/p/9499911.html