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

相关内容

热门资讯

怎么在安卓系统装windows... 你是不是也和我一样,对安卓手机的强大性能爱不释手,但又时不时地想念Windows系统的熟悉界面和那些...
kindle安卓系统壁纸设置,... 亲爱的Kindle用户,你是否曾为你的Kindle设备挑选过一款心仪的壁纸呢?今天,就让我带你一起探...
一加降级安卓系统,回顾与展望 你有没有想过,你的手机系统升级后,竟然还能降级回旧版本?这听起来是不是有点像穿越时空的魔法?没错,今...
凤凰安卓电视系统安装,畅享智能... 亲爱的读者们,你是否也像我一样,对凤凰安卓电视系统安装充满了好奇?想象一台普通的电视,通过安装这个系...
如何更换安卓系统手机,安卓系统... 你有没有想过,你的安卓手机用久了,是不是有点儿卡顿了呢?别急,今天就来教你怎么给它换换“血”,让它焕...
国家粮油统计安卓系统,智能数据... 你有没有想过,每天我们吃的粮食,背后竟然有这么多的故事和数据呢?没错,今天就要带你走进国家粮油统计的...
台电双系统安卓更新,畅享双平台... 你知道吗?最近台电的双系统安卓更新可是引起了不小的轰动呢!作为一个紧跟科技潮流的数码爱好者,我可是迫...
安卓系统上打开caj,Andr... 你有没有遇到过这种情况:手里拿着一本看起来超级有料的电子书,打开一看,哎呀妈呀,竟然是CAJ格式!别...
装安卓手机系统教程,安卓手机系... 你有没有想过,让你的安卓手机也能装上Windows系统,体验一下不一样的操作界面呢?没错,今天就要来...
安卓系统不供应华为,安卓系统不... 你知道吗?最近有个大新闻在科技圈里炸开了锅,那就是安卓系统不再供应华为了!这可不仅仅是两个公司之间的...
安卓哪个系统功耗小些,揭秘哪个... 你有没有发现,手机用着用着,电池就有点不给力了?尤其是安卓手机,系统更新换代快,但功耗问题却一直让人...
免费升级安卓系统吗,畅享智能新... 亲爱的读者们,你是否也像我一样,对安卓系统的免费升级充满了好奇和期待呢?想象你的手机从老旧的系统升级...
运行安卓app的系统,系统版本... 你有没有想过,你的手机里那些运行得风生水起的安卓应用,它们究竟是在什么样的系统下翩翩起舞的呢?今天,...
安卓系统保存照片,安卓系统照片... 手机里的照片是不是越来越多,你有没有想过,这些珍贵的回忆是怎么被安卓系统保存下来的呢?今天,就让我带...
手机安卓系统会卡吗,安卓手机系... 你有没有发现,手机用久了,尤其是安卓系统,有时候会变得有点“慢吞吞”的?这不,今天就来聊聊这个话题,...
安卓系统自己安装mim,And... 你有没有发现,你的安卓手机最近有点儿“聪明”了呢?它竟然自己动手安装了MIM(Mirroring)应...
iwork10安卓系统,创新办... 你有没有发现,最近你的手机是不是变得越来越卡了?别急,别急,让我来给你介绍一款神器——iWork10...
安卓手机装deepin系统,安... 你有没有想过给你的安卓手机换换口味呢?别再局限于那些千篇一律的操作系统了,今天就来给你揭秘如何让你的...
安卓系统不收钱吗,安卓系统免费... 你有没有想过,为什么安卓系统不用你掏腰包呢?是不是觉得它就像那免费的午餐,来者不拒,享用起来毫无负担...
8848系统是安卓的,安卓生态... 你知道吗?在手机操作系统的大千世界里,有一个特别的存在,那就是8848系统。它可不是什么小角色,而是...