每日一题——[HNOI2003]激光炸弹

题目

[HNOI2003]激光炸弹

题解

读完题可以发现这几乎就是一个裸的前缀和板子,然后把所有的正方形r遍历一遍找出最大价值。那么开敲,如果不会前缀和差分知识可以单独拿出来学习一下。

参考代码

#include<iostream>
using namespace std;
const int N = 5010;
int n, m, r;
int g[N][N];
int main(){
    cin >> n >> r;
    for(int i = 1; i <= n; i ++){
        int x, y, w;
        cin >> x >> y >> w;
        g[x + 1][y + 1] = w;
    }
    for(int i = 1; i < N; i ++){
        for(int j = 1; j < N; j ++){
            g[i][j] += g[i - 1][j] + g[i][j - 1] - g[i - 1][j - 1];
        }
    }
    int res = 0;
    for(int i = r; i < N ; i ++){
        for(int j = r; j < N; j ++){
            res = max(res, g[i][j] - g[i - r][j] - g[i][j - r] + g[i - r][j - r]);
        }
    }
    cout << res << endl;
    return 0;
}
posted @ 2025-03-09 20:26  PZnwbh  阅读(45)  评论(0)    收藏  举报