激光炸弹(前缀和)
创始人
2024-05-29 14:06:39
0

地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi。

注意:不同目标可能在同一位置。

现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。

激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,y 轴平行。

求一颗炸弹最多能炸掉地图上总价值为多少的目标。

输入格式

第一行输入正整数 N 和 R,分别代表地图上的目标数目和正方形包含的横纵位置数量,数据用空格隔开。

接下来 N 行,每行输入一组数据,每组数据包括三个整数 Xi,Yi,Wi,分别代表目标的 x 坐标,y 坐标和价值,数据用空格隔开。

输出格式

输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。

数据范围

0≤R≤109

0

0≤Xi,Yi≤5000

0≤Wi≤1000

输入样例:

2 1
0 0 1
1 1 1

输出样例:

1

题目分析:如下图,每个目标是一个方格点,由题意知在炸弹范围边缘的不算,因此只能最多炸到R×R的范围的点

因此我们可以运用前缀和的思想,把所有的炸弹范围枚举一遍,找到总价值最高的价值数,由于是前缀和,我们枚举要从右下角开始枚举

代码实现:

#include
#include
#include
using namespace std;
const int N=5010;
int n,m;//表示整个大矩形得长和宽
int st[N][N];//开一个前缀和数组
int main()
{int cnt,R;cin>>cnt>>R;R=min(5001,R);n=R,m=R;while(cnt--){int x,y,w;cin>>x>>y>>w;x++,y++;//相当于把数组由(0,0)开始变成从(1,1)开始,这样可以不用考虑边界问题n=max(n,x),m=max(m,y);//n和m应该取一个输入x,y的最大值,如果炸弹范围R更大,则取Rst[x][y]+=w;//因为同一个位置可能会有很多目标,因此用+=}//预处理前缀和for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){st[i][j]+=st[i-1][j]+st[i][j-1]-st[i-1][j-1];}}//从每个(i,j)开始枚举,找到最大值int res=0;for(int i=R;i<=n;i++)for(int j=R;j<=m;j++){res=max(res,st[i][j]-st[i-R][j]-st[i][j-R]+st[i-R][j-R]);}cout<

这里把这题运用前缀和的公式也放出来,(i,j)是右下角的点,(i-R+1,j-R+1)是左上角的点,把这两个点带入前缀和公式中即可

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...