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;
}

相关内容

热门资讯

安卓系统用日语说,「Andro... 你有没有想过,用安卓手机也能轻松说日语呢?没错,就是那种听起来就让人心情愉悦的日语!今天,就让我带你...
鸿蒙系统下载安卓版,畅享智能生... 你知道吗?最近手机圈里可是炸开了锅,华为的鸿蒙系统安卓版终于来了!这可不是什么小道消息,而是实实在在...
安卓可用ios系统下载,探索跨... 你知道吗?现在科技的发展真是让人眼花缭乱,安卓手机居然也能用iOS系统下载应用啦!是不是觉得有点不可...
安卓系统mac地址获取,如何通... 亲爱的手机控们,你是否曾好奇过,你的安卓手机里隐藏着一个神秘的“身份证”——MAC地址?别急,今天就...
安卓系统怎么截图泡泡,掌握泡泡... 你是不是也和我一样,有时候想记录下手机上的精彩瞬间,却发现截图功能有点儿复杂?别急,今天我就来给你揭...
安卓给apk系统权限,Andr... 亲爱的安卓用户们,你是否曾好奇过,那些神奇的apk文件是如何在安卓系统中获得系统权限的呢?今天,就让...
安卓系统设置消息提醒,不错过任... 手机里的消息就像小蜜蜂一样,嗡嗡嗡地飞来飞去,有时候重要信息一不留神就错过了。别急,今天就来教你如何...
windows phone 安... 你有没有想过,你的Windows Phone手机也能变身成为安卓小精灵呢?没错,就是那个我们日常离不...
小米8关闭安卓系统,探索新系统... 你有没有想过,你的小米8手机里其实还隐藏着一个秘密世界——那就是安卓系统!没错,小米8不仅仅是一部手...
安卓系统可以解锁吗,全方位解锁... 手机屏幕上那串神秘的数字密码,是不是让你头疼不已?别急,今天就来给你揭秘安卓系统解锁的奥秘,让你轻松...
儿童电话手表 安卓系统,安全成... 宝贝们是不是也想要一款炫酷的儿童电话手表呢?今天,就让我带你一起探索一下市面上那些功能强大、设计时尚...
橘子系统怎么变安卓系统,轻松变... 亲爱的橘子系统玩家们,是不是最近手痒痒,想要把你的橘子系统角色搬到安卓系统上大显身手呢?别急别急,今...
开源圈和安卓系统,构建移动时代... 你有没有想过,你的手机里那个看似普通的安卓系统,其实背后有着一个庞大的开源圈呢?没错,就是那个让全球...
雷电安卓系统怎么转苹果系统,探... 你是不是也和我一样,手里拿着一台运行着雷电安卓系统的手机,突然之间对苹果的iOS系统产生了浓厚的兴趣...
设备管理系统安卓,Androi... 你有没有想过,你的安卓手机其实是个小秘书,随时准备着为你打理一切?没错,这就是设备管理系统的神奇魅力...
安卓系统太卡怎样处理,五大技巧... 亲爱的手机,你最近是不是有点儿“懒洋洋”的?打开应用慢吞吞,滑动页面卡得慌,这可真是让人头疼啊!别急...
安卓系统不认u盘,安卓手机不识... 亲爱的手机控们,你是否也有过这样的烦恼:明明把U盘插进了安卓手机,可手机却像没看见一样,一点反应都没...
苹果系统可以刷安卓,探索跨界融... 哎呀呀,你知道吗?最近在科技圈里可是掀起了一股热潮,那就是——苹果系统竟然可以刷安卓!是不是听起来有...
安卓与酷开系统,解析智能电视操... 你有没有想过,家里的电视,那个大屏幕的“小宝贝”,它其实也有自己的“操作系统”呢?没错,就是安卓系统...
安卓系统蓝牙怎么关掉,安卓系统... 手机里的蓝牙功能有时候真是让人又爱又恨。有时候,你正忙得不可开交,蓝牙却突然跳出来,让你不得不分心去...