码迷,mamicode.com
首页 > 其他好文 > 详细

激光炸弹

时间:2020-03-04 21:07:42      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:而在   mes   strong   span   题解   等价   code   pac   name   

# 题意
炸弹可以摧毁变长为R的正方形内部的所有目标,不包括边上的,n个目标,每个目标有一个价值,爆炸范围必须与x,y轴平行,求正方形最大包含的价值数

# 题解
预处理二维前缀和,从边长允许的范围内开始枚举,取最大值即可,题目要求不能将边上的计算,题目中的坐标表示的是一个点,而在矩阵中枚举的是一个格子,可以认为在坐标系中所有点的坐标都+0.5,因为遍历所有正方形的可能分布,所以两个问题是等价的

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=5100;
 4 int n,r;
 5 int s[N][N];
 6 int max_x,max_y;
 7 int main(){
 8     ios::sync_with_stdio(0);
 9     cin.tie(0);
10     cout.tie(0);
11     cin>>n>>r;
12     max_x=max_y=r;
13     while(n--){
14         int x,y,w;
15         cin>>x>>y>>w;
16         x++;
17         y++;
18         s[x][y]=w;
19         max_x=max(x,max_x);
20         max_y=max(y,max_y);
21     }
22     for(int i = 1; i <= max_x; i++)
23         for(int j = 1; j <= max_y; j++)
24             s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+s[i][j];
25     int ans=0;
26     for(int i = r; i <= max_x; i++)
27         for(int j = r; j <= max_y; j++)
28             ans=max(ans , s[i][j] - s[i-r][j] - s[i][j-r] + s[i-r][j-r]);
29     cout<<ans<<endl;
30 }

 

激光炸弹

标签:而在   mes   strong   span   题解   等价   code   pac   name   

原文地址:https://www.cnblogs.com/hhyx/p/12411924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!