OpenJudge NOI 2.1 7213:垃圾炸弹
admin
2024-02-25 10:28:37
0

【题目链接】

OpenJudge NOI 2.1 7213:垃圾炸弹

【题目考点】

1. 枚举

【解题思路】

解法1:枚举

可以枚举每个可能安放炸弹的位置,路口一共有1024∗1024≈1061024*1024\approx 10^61024∗1024≈106个

根据题意,当爆炸威力为d时,冲击波范围是个正方形,其边长为2d+12d+12d+1。
我们考虑当炸弹威力d为最大值50时,冲击波波及的正方形边长为2∗50+1=1012*50+1=1012∗50+1=101,这个范围内的位置有1012≈104101^2\approx 10^41012≈104个。
如果先枚举安放炸弹的位置,再枚举该炸弹波及的范围内的每个位置看这个位置有没有垃圾,那么总体复杂度会达到O(106∗104)=O(1010)O(10^6*10^4)=O(10^{10})O(106∗104)=O(1010),超过了O(107)O(10^7)O(107),是不可接受的。

考虑到有垃圾路口的数量n很小,最大值为20。那么我们在确定安放炸弹的位置后,枚举每个垃圾路口,看哪些垃圾路口在该炸弹的波及范围之内,将能被波及到的垃圾数量加和,即为在这里安装炸弹能销毁的垃圾数量。
枚举所有可以安放炸弹的位置:

  • 如果找到一个位置安放炸弹销毁的垃圾数量大于当前已知的最大垃圾销毁数量,那么可以安放炸弹的地点数量变为1。
  • 如果找到一个位置安放炸弹销毁的垃圾数量与当前已知最大垃圾销毁数量相同,那么可以安放炸弹的地点数量加1。

判断垃圾路口(i,j)是否在放在(x,y)位置的威力为d的炸弹波及范围内的方法:
垃圾路口在横向与纵向到(x,y)的距离都不能超过d。
即i与x的差值的绝对值要小于等于d,,同时j与y差值的绝对值要小于等于d,用代码表示为:abs(i-x)<= d && abs(j-y) <= d

【题解代码】

解法1:枚举

#include
using namespace std;
#define N 1030
struct Garbage
{int x, y, i;//(x,y)处有垃圾数量i	
}g[25];//g[i]:第i个垃圾路口 
int main()
{int d, n, mxSum = 0, ct;//mxSum:最大销毁垃圾数目 ct:可以销毁mxSum数量垃圾的炸弹安放位置数 cin >> d >> n;for(int i = 1; i <= n; ++i)cin >> g[i].x >> g[i].y >> g[i].i;		for(int i = 0; i <= 1024; ++i)for(int j = 0; j <= 1024; ++j){//在(i,j)位置放炸弹int sum = 0;//在(i,j)位置安放炸弹销毁的垃圾总和  for(int k = 1; k <= n; ++k)//看垃圾路口g[k]是否在(i,j)炸弹的范围之内 if(abs(i-g[k].x) <= d && abs(j-g[k].y) <= d)sum += g[k].i;if(sum > mxSum){mxSum = sum;//最大销毁垃圾数量ct = 1;//能销毁mxSum的炸弹位置变为1 }	else if(sum == mxSum)ct++;//能销毁mxSum的炸弹位置增加1}cout << ct << ' ' << mxSum;return 0;
}

相关内容

热门资讯

安装新开关电源系统,安装新开关... 安装新开关电源系统的全面指南一、准备工作在安装新开关电源系统之前,我们需要做好以下准备工作: 了解...
保定校园安装新风系统,保定校园... 保定校园新风系统安装,助力学生健康呼吸随着空气污染问题的日益严重,室内空气质量对人们健康的影响也日益...
安装系统正在首页为,华为鸿蒙H... 华为鸿蒙HarmonyOS NEXT系统安装预加载功能详解一、什么是安装预加载功能?安装预加载功能,...
安卓系统安装动态壁纸,安卓系统... 安卓系统安装动态壁纸的详细教程随着智能手机的普及,个性化设置成为了用户追求的一大亮点。动态壁纸作为手...
安装系统终止后屏幕闪烁,安装系... 安装系统终止后屏幕闪烁的原因及解决方法在电脑使用过程中,我们可能会遇到各种问题,其中安装系统终止后屏...
安装系统怎么写入U盘,如何将系... 如何将系统写入U盘,实现从U盘启动安装系统一、准备工作在开始操作之前,请确保您已经做好了以下准备工作...
安装正版windows10系统... 安装正版Windows 10系统的完整指南一、准备安装环境在开始安装Windows 10之前,我们需...
氨系统冷库安装,技术要点与注意... 氨系统冷库安装:技术要点与注意事项随着冷链物流行业的快速发展,氨系统冷库因其高效、稳定的制冷性能,在...
区块链系统需要安装吗,区块链系... 区块链系统是否需要安装?区块链技术作为一种新兴的分布式账本技术,已经在金融、供应链、物联网等多个领域...
板载sata安装系统,板载SA... 板载SATA安装系统的详细步骤与注意事项随着计算机硬件技术的不断发展,SATA(Serial ATA...
安装战斗系统教程图片大全,战神... 战神K650D-i5 D2光盘安装系统图文教程一、准备工具在开始安装系统之前,您需要准备以下工具:h...
安装系统怎么选盘,安装系统时如... 安装系统时如何选择磁盘分区在安装操作系统时,选择正确的磁盘分区是至关重要的。这不仅关系到系统的稳定性...
帮人家安装系统,轻松掌握——在... 轻松掌握——在家轻松安装操作系统教程一、准备工作在开始安装操作系统之前,我们需要做好以下准备工作: ...
安装新风系统耗材,安装新风系统... 安装新风系统所需耗材全解析随着人们对室内空气质量要求的提高,新风系统逐渐成为家庭和办公场所的标配。安...
安装新风系统能防雾霾吗,安装新... 安装新风系统能有效防止雾霾吗?随着环境污染问题的日益严重,雾霾已经成为影响人们健康和生活质量的重要因...
安装烟台新风系统,打造健康呼吸... 烟台新风系统安装指南:打造健康呼吸环境随着城市化进程的加快,空气质量问题日益凸显。为了改善室内空气质...
安装系统总卡在镜像界面,原因及... 系统安装卡在镜像界面:原因及解决方案在电脑系统安装过程中,有时会遇到卡在镜像界面的问题,这不仅影响了...
清洗系统安装,关键步骤与注意事... 清洗系统安装:关键步骤与注意事项随着工业生产和生活水平的不断提高,清洗系统的应用越来越广泛。清洗系统...
安卓系统安装语言,轻松上手,享... 安卓系统安装指南:轻松上手,享受智能生活一、准备工作在开始安装安卓系统之前,您需要做好以下准备工作:...
安装消防安全系统价格表,全面解... 安装消防安全系统价格表:全面解析各类消防设备成本随着社会的发展和科技的进步,消防安全问题日益受到重视...