当前位置: 首页 > news >正文

华为非AI方向笔试真题 7月1号【单规格炸弹】

单规格炸弹(C++/Py/Java/Js/Go)题解

华为笔试真题 7月1号 非AI方向第二题 200分题型

题目内容

云小核接到一个爆破任务,为了重建老旧一条街,需要将这条街上的老建筑全部爆破。云小核拿到一张图,显示了这条街上每个建筑的位置,还拿到很多炸弹,这些炸弹只能部署在建筑里,且具有一定的影响范围,距离炸弹部署点小于等于炸弹影响范围的建筑,会被一起爆破。由于预算有限,请你帮云小核计算至少需要多少炸弹,才能将所有建筑爆破。

输入描述

111行:两个整型数值:NNNMMM1≤N≤10000001 \le N \le 10000001N1000000,表示建筑数量;0≤M≤10000000000 \le M \le 10000000000M1000000000,表示炸弹的影响范围,000表示只能爆破炸弹所在位置(包括位置相同)的建筑。
222行:NNN个整型数值:n0,n1,...nN−1n0,n1,...nN-1n0,n1,...nN10<ni≤10000000000 < ni \le 10000000000<ni1000000000,表示建筑的位置。

输出描述

一个整型数值,表示最少需要的炸弹数量。

样例1

输入

6 10 0 40 5 25 10 50

输出

3

说明
至少需要333颗炸弹,可部署在101010252525505050位置上。

样例2

输入

3 10 10 20 50

输出

2

题解

思路

思路:贪心

  1. 需要尽可能少放置炸弹,需要让每个炸弹覆盖更多位置。所以尽量让炸弹放置在未覆盖区域中间位置。
  2. 按照1的逻辑对输入位置进行升序排序。
  3. 然后模拟统计需要炸弹次数即可。
  4. 算法时间复杂度为O(logn)

C++

#include<bits/stdc++.h>usingnamespacestd;intmain(){ios_base::sync_with_stdio(false);cin.tie(nullptr);intn,m;cin>>n>>m;vector<int>pos(n);for(inti=0;i<n;i++){cin>>pos[i];}sort(pos.begin(),pos.end());intans=0;inti=0;// 贪心,放置在中间while(i<n){ans++;intleft=pos[i];intmid=pos[i];i++;while(i<n&&pos[i]-left<=m){mid=pos[i];i++;}while(i<n&&pos[i]-mid<=m){i++;}}cout<<ans;}

java

importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();intm=sc.nextInt();int[]pos=newint[n];for(inti=0;i<n;i++){pos[i]=sc.nextInt();}Arrays.sort(pos);intans=0;inti=0;// 贪心,放置在中间while(i<n){ans++;intleft=pos[i];intmid=pos[i];i++;while(i<n&&pos[i]-left<=m){mid=pos[i];i++;}while(i<n&&pos[i]-mid<=m){i++;}}System.out.print(ans);}}

python

defmain():n,m=map(int,input().split())pos=list(map(int,input().split()))pos.sort()ans=0i=0# 贪心,放置在中间whilei<n:ans+=1left=pos[i]mid=pos[i]i+=1whilei<nandpos[i]-left<=m:mid=pos[i]i+=1whilei<nandpos[i]-mid<=m:i+=1print(ans,end="")if__name__=="__main__":main()

javascript

constreadline=require("readline");constrl=readline.createInterface({input:process.stdin,output:process.stdout});letinput=[];rl.on("line",(line)=>{input.push(line);});rl.on("close",()=>{const[n,m]=input[0].split(" ").map(Number);constpos=input[1].split(" ").map(Number);pos.sort((a,b)=>a-b);letans=0;leti=0;// 贪心,放置在中间while(i<n){ans++;constleft=pos[i];letmid=pos[i];i++;while(i<n&&pos[i]-left<=m){mid=pos[i];i++;}while(i<n&&pos[i]-mid<=m){i++;}}process.stdout.write(ans.toString());});

Go

packagemainimport("bufio""fmt""os""sort")funcmain(){in:=bufio.NewReader(os.Stdin)varn,mintfmt.Fscan(in,&n,&m)pos:=make([]int,n)fori:=0;i<n;i++{fmt.Fscan(in,&pos[i])}sort.Ints(pos)ans:=0i:=0// 贪心,放置在中间fori<n{ans++left:=pos[i]mid:=pos[i]i++fori<n&&pos[i]-left<=m{mid=pos[i]i++}fori<n&&pos[i]-mid<=m{i++}}fmt.Print(ans)}
http://www.jsqmd.com/news/1236820/

相关文章:

  • 深入解析STM32 GPIO配置:从寄存器原理到实战应用
  • Poco跨引擎UI自动化测试框架:从入门到精通的完整指南
  • 2026 年宁夏靠谱的古建牌楼工程公司选哪家,拆掉它?揭秘古建牌楼工程背后的惊人成本秘密 - 品质体验官
  • 网络文学中邪医传承的体系构建与创作技巧
  • 如何在24G显存下微调ChatGLM?ChatGLM-finetune-LoRA的最低硬件要求与环境配置
  • 3行代码实现3D人体重建!Pose2Mesh_RELEASE单人与多人Demo实战教程
  • YOLOv10热力图技术构建:实时人群密度分析与行为模式识别系统
  • Big Data、AI与IoT融合落地的三大断层与破局路径
  • 眼科疾病辅助诊断系统开题报告
  • 盐城域内黄金换新哪家好2026最新实力榜揭晓 - 招财兔数字员工
  • 租电脑哪家能短租:雕马一月优选 - 18102756859
  • AI团队角色重构:从职能分工到责任闭环的落地实践
  • 2026年成都美国留学机构哪家口碑好:五家优选深度解析 - 科技焦点
  • 小米多线圈无线快充技术解析与拆解
  • 百考通得力助手:AI赋能文献综述,助力每一份研究从良好开端走向卓越成果
  • AI项目总延期?不是人的问题——是工具没选对!7天内切换即见效的4款轻量级智能PM工具清单
  • React Native ECharts与原生图表库对比分析:何时选择WebView方案
  • Backbone.offline实战教程:创建离线可用的待办事项应用
  • C++ Web开发革命:Wt框架如何用原生C++颠覆传统Web开发模式
  • 北京甲醛检测公司怎么选:只做检测不除醛的专业CMA资质实验室——国慷测研CMA甲醛检测及公共卫生检测 - CMA甲醛检测中心
  • Earthdata Search数据可视化功能详解:让卫星数据变得直观易懂
  • shell的一些文件操作
  • 2026上海商标注册机构排名|正规财税服务机构实力榜单 - 行业深度分析
  • OpenCV-Python实战(21)——OpenCV人脸检测项目在Web端的部署
  • AGENTS.md深度解析:3个关键步骤让AI编程助手真正理解你的项目需求
  • 如何高效使用cJSON:C语言JSON处理的完整解决方案
  • AI写ETL不是替代开发者,而是重构协作链:看某万亿级数据中台如何用AI重定义Data Engineer角色
  • AI 电动记号笔智能功率 MOSFET 完整选型方案
  • 百考通得力助手:AI赋能答辩PPT,精准抓取,助力每一份研究从良好开端走向卓越成果
  • 从告警疲劳到智能运维:Keep构建企业级AIOps监控新范式