激光炸弹

[HNOI2003]激光炸弹

https://ac.nowcoder.com/acm/problem/20032

思路

二维前缀和 ,模板题

ac 代码

#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;

const int N = 5010;//这个N表示点最多的数量
int g[N][N];

int main() {

    int N, R;//为了方便就重名了,两个N重名是没关系的,因为会优先选择函数里的
    cin >> N >> R;
    int xx = R, yy = R;//xx和yy表示边界,初始化为最小的R

    for (int i = 0,x,y,w; i < N; ++i) {
        cin >> x >> y >> w;
        x++; y++;//坐标x,y都要加1,因为这道题目的坐标是从0开始的
        g[x][y] = w;
        xx = max(xx, x);
        yy = max(yy, y);
    }

    for (int i = 1; i <= xx; i++) 
        for (int j = 1; j <= yy; j++)
            g[i][j] = g[i - 1][j] + g[i][j - 1] - g[i - 1][j - 1] + g[i][j];//求前缀和

    int ans = 0;
    for (int i = R; i <= xx; i++) {
        for (int j = R; j <= yy; j++) {
            ans = max(ans, g[i][j] - g[i - R][j] - g[i][j - R] + g[i - R][j - R]);//用提前算好的前缀和减去其他部分再补上多剪的那部分
        }
    }
    printf("%d\n", ans);
    return 0;
}
全部评论

相关推荐

专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务