HNOI2003 激光炸弹

[HNOI2003]激光炸弹

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

题目大意:输入一个N与R,之后N行输入每个炸弹的坐标与价值,问你在边长为N的正方形下什么时候价值最大
思路:二维前缀和,画图利用公式v[i][j]=v[i-1][j]+v[i][j-1]-v[i][j]+val得出每个点到(0,0)的总价值,再利用两个for循环寻找正方形内价值即可
代码如下:#include

using namespace std;
int v[5000][5000]={0};
int sumv[5000][5000]={0};
int main()
{
int n,r,i;
cin>>n>>r;
int a,b,val;
int maxx=r,maxy=r;//边界,不能设为0,不然输入的时候坐标输入小于R的时候for循环就不会找正方形了
for(i=0;i<n;i++){
cin>>a>>b>>val;
a++,b++;
v[a][b]=val;
maxx=max(a,maxx);
maxy=max(b,maxy);
}
for(i=1;i<=maxx;i++){
for(int j=1;j<=maxy;j++){
v[i][j]+=v[i-1][j]+v[i][j-1]-v[i-1][j-1];//求二维前缀和
}
}
int ans=0;//最大价值
for(i=r;i<=maxx;i++){
for(int j=r;j<=maxy;j++){
ans=max(ans,v[i][j]-v[i-r][j]-v[i][j-r]+v[i-r][j-r]);//看当前正方形内的价值是否为最大价值,是就ti'h
}
}
cout<<ans;
return 0;
}

全部评论

相关推荐

小鹏、大疆、米哈游、MinMax小鹏上午投的下午就约面,进度未免也太快了
蛇年行大运fff:哥们 盗贴有意思吗,我发xhs上的给你搬过来了😅😅😅
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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