激光炸弹

[HNOI2003]激光炸弹

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

//炸弹的边长为r,能够包括的点数最多为人r^2个点,那么我们对点数为r^2的子矩阵求和,找出其中最大值;
#include<iostream>
using namespace std;
int map[5001][5001];
int ans[5001][5001];
int main(){
int a,r;
cin>>a>>r;
for(int i=0;i<a;i++){
int x1,x2,x3;
cin>>x1>>x2>>x3;
map[x1+1][x2+1]=x3;//将点存进map数组;
}
for(int i=0;i<=5000;i++){
for(int j=1;j<=5000;j++){
map[i][j]+=map[i][j-1];//每行的前缀和
}
}
for(int i=0;i<=5000;i++){
for(int j=1;j<=5000;j++){
map[j][i]+=map[j-1][i];//每列求前缀和
}
}</iostream>

for(int i=0;i<=5000-r;i++){
    for(int j=0;j<=5000-r;j++){
        ans[i][j]=map[i][j]+map[i+r][j+r]-map[i+r][j]-map[i][j+r];//遍历所有大小为r^2的区间并求和; 
    }
}
int maxn=0;
for(int i=0;i<5000;i++)
for(int j=0;j<5000;j++){
    if(ans[i][j]>maxn)maxn=ans[i][j];//找出最大值; 
} 
cout<<maxn<<endl;
return 0;

}

全部评论

相关推荐

求个付费实习岗位:这种就是吃满时代红利又没啥技术水平,只能靠压力学生彰显优越感的老登,别太在意了
点赞 评论 收藏
分享
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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