华为非AI方向笔试真题 7月1号【魔法能量分配】
魔法能量分配(C/Py/Java/Js/Go)题解华为笔试真题 7月1号 非AI方向第三题 300分题型题目内容在一个魔法世界中有nnn位法师和mmm个魔法水晶。每位法师都有一定的初始能量值每个水晶也蕴含着基础的魔法能量。法师可以通过吸收水晶来提升自己的能量但水晶的实际加成效果会受到法师初始能量的影响——法师初始能量越高水晶提供的能量加成越少。初始状态第iii位法师的初始能量值为a[i]a[i]a[i]第jjj个水晶的基础能量为b[j]b[j]b[j]。能量吸收规则当一个基础能量为b[j]b[j]b[j]的水晶被分配给初始能量值为a[i]a[i]a[i]的法师时并且这次分配是该法师个人吸收的第kkk个水晶(kkk从111开始计数)该法师实际增加的能量值为:b[j]−(k∗a[i])b[j] - (k * a[i])b[j]−(k∗a[i])。如果计算结果≤0\le 0≤0则该法师无法从此水晶获得任何能量自身能量也不会减少。使用限制每位法师可以吸收多个水晶也可以不吸收但每个水晶只能使用一次。目标合理分配所有水晶使分配后所有法师的能量之和达到最大。输入描述第一行两个整数nnn和mmm空格分隔表示nnn位法师mmm个魔法水晶。第二行空格分隔的nnn个整数表示每位法师的初始能量a[1],a[2],...,a[n]a[1],a[2],...,a[n]a[1],a[2],...,a[n]。第三行空格分隔的mmm个整数表示每个水晶的基础能量b[1],b[2],...,b[m]b[1],b[2],...,b[m]b[1],b[2],...,b[m]。输入约束1≤n≤1051 \le n \le 10^51≤n≤1051≤m≤1051 \le m \le 10^51≤m≤1051≤a[i]≤1051 \le a[i] \le 10^51≤a[i]≤1051≤b[j]≤1051 \le b[j] \le 10^51≤b[j]≤105输出描述一个整数表示分配水晶后所有法师增加的能量之和的最大值。样例1输入2 3 5 100 20 15 10输出20说明第一个水晶(魔法能量202020)分配给第一个法师(能量值555)增加能量为20−(1∗5)1520-(1*5)1520−(1∗5)15第二个水晶(魔法能量151515)应该分配给第一个法师增加的能量为15−(2∗5)515-(2*5)515−(2∗5)5合计202020第三个水晶分配后收益≤0\le0≤0不计入总和。题解思路思路:贪心收益b−代价,因此要想获得更大收益问题就变成了依次把水晶分配给当前可用的槽位每次都选择代价最小的槽位。同时为了让大的水晶产生更大的收益需要先处理能量最大的水晶再处理能量较小的水晶。所以根据1的分析代码处理策略就是水晶按能量从大到小排序用优先队列维护当前所有法师的最小可用槽位代价每次把当前最大的水晶分给当前代价最小的槽位。算法运行平均时间复杂度为O(mlogmmlognn)C#includebits/stdc.husingnamespacestd;intmain(){ios_base::sync_with_stdio(false);cin.tie(nullptr);intn,m;cinnm;vectorinta(n);vectorintb(m);for(inti0;in;i){cina[i];}for(inti0;im;i){cinb[i];}autocmp[](constpairint,inta,constpairint,intb){returna.first*a.secondb.first*b.second;};priority_queuepairint,int,vectorpairint,int,decltype(cmp)pq(cmp);// 初次将所有法师加入队列中for(inti0;in;i){pq.push({a[i],1});}longsum0;sort(b.begin(),b.end(),greaterint());for(inti0;im;i){pairint,intcurpq.top();pq.pop();intcostcur.first*cur.second;// 后续水晶能量更小槽位代价更大不会再有收益if(b[i]-cost0){break;}sumb[i]-cost;// 重新加入对应代价pq.push({cur.first,cur.second1});}coutsum;return0;}javaimportjava.util.*;publicclassMain{staticclassNode{intfirst;intsecond;Node(intfirst,intsecond){this.firstfirst;this.secondsecond;}}publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intnsc.nextInt();intmsc.nextInt();int[]anewint[n];Integer[]bnewInteger[m];for(inti0;in;i){a[i]sc.nextInt();}for(inti0;im;i){b[i]sc.nextInt();}PriorityQueueNodepqnewPriorityQueue((x,y)-Integer.compare(x.first*x.second,y.first*y.second));// 初次将所有法师加入队列中for(inti0;in;i){pq.offer(newNode(a[i],1));}longsum0;Arrays.sort(b,Collections.reverseOrder());for(inti0;im;i){Nodecurpq.poll();intcostcur.first*cur.second;// 后续水晶能量更小槽位代价更大不会再有收益if(b[i]-cost0){break;}sumb[i]-cost;// 重新加入对应代价pq.offer(newNode(cur.first,cur.second1));}System.out.print(sum);}}pythonimportheapqdefmain():n,mmap(int,input().split())alist(map(int,input().split()))blist(map(int,input().split()))pq[]# 初次将所有法师加入队列中forxina:heapq.heappush(pq,(x,1))sum_val0b.sort(reverseTrue)forenergyinb:first,secondheapq.heappop(pq)costfirst*second# 后续水晶能量更小槽位代价更大不会再有收益ifenergy-cost0:breaksum_valenergy-cost# 重新加入对应代价heapq.heappush(pq,(first,second1))print(sum_val,end)if__name____main__:main()javascriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});letinput[];rl.on(line,line{input.push(line);});classPriorityQueue{constructor(compare){this.data[];this.comparecompare;}push(item){this.data.push(item);this.up(this.data.length-1);}pop(){consttopthis.data[0];constlastthis.data.pop();if(this.data.length){this.data[0]last;this.down(0);}returntop;}up(idx){while(idx0){letp(idx-1)1;if(!this.compare(this.data[idx],this.data[p]))break;[this.data[idx],this.data[p]][this.data[p],this.data[idx]];idxp;}}down(idx){constnthis.data.length;while(true){letsmallestidx;letlidx*21;letridx*22;if(lnthis.compare(this.data[l],this.data[smallest])){smallestl;}if(rnthis.compare(this.data[r],this.data[smallest])){smallestr;}if(smallestidx)break;[this.data[idx],this.data[smallest]][this.data[smallest],this.data[idx]];idxsmallest;}}}rl.on(close,(){const[n,m]input[0].split( ).map(Number);constainput[1].split( ).map(Number);constbinput[2].split( ).map(Number);constpqnewPriorityQueue((x,y)x[0]*x[1]y[0]*y[1]);// 初次将所有法师加入队列中for(leti0;in;i){pq.push([a[i],1]);}letsum0;b.sort((x,y)y-x);for(leti0;im;i){constcurpq.pop();constcostcur[0]*cur[1];// 后续水晶能量更小槽位代价更大不会再有收益if(b[i]-cost0){break;}sumb[i]-cost;// 重新加入对应代价pq.push([cur[0],cur[1]1]);}process.stdout.write(sum.toString());});Gopackagemainimport(bufiocontainer/heapfmtossort)typeNodestruct{firstintsecondint}typePriorityQueue[]Nodefunc(pq PriorityQueue)Len()int{returnlen(pq)}func(pq PriorityQueue)Less(i,jint)bool{returnpq[i].first*pq[i].secondpq[j].first*pq[j].second}func(pq PriorityQueue)Swap(i,jint){pq[i],pq[j]pq[j],pq[i]}func(pq*PriorityQueue)Push(xinterface{}){*pqappend(*pq,x.(Node))}func(pq*PriorityQueue)Pop()interface{}{old:*pq n:len(old)item:old[n-1]*pqold[:n-1]returnitem}funcmain(){in:bufio.NewReader(os.Stdin)varn,mintfmt.Fscan(in,n,m)a:make([]int,n)b:make([]int,m)fori:0;in;i{fmt.Fscan(in,a[i])}fori:0;im;i{fmt.Fscan(in,b[i])}pq:PriorityQueue{}heap.Init(pq)// 初次将所有法师加入队列中fori:0;in;i{heap.Push(pq,Node{a[i],1})}varsumint64sort.Slice(b,func(i,jint)bool{returnb[i]b[j]})fori:0;im;i{cur:heap.Pop(pq).(Node)cost:cur.first*cur.second// 后续水晶能量更小槽位代价更大不会再有收益ifb[i]-cost0{break}sumint64(b[i]-cost)// 重新加入对应代价heap.Push(pq,Node{cur.first,cur.second1})}fmt.Print(sum)}

相关新闻

告别VBA束缚,“平替”升级版——C语言文件夹操作

告别VBA束缚,“平替”升级版——C语言文件夹操作

前期,我们讲了怎么用VBA语言操作文件夹 。用VBA自带的那些功能,就可以很方便地新建、移动、删除文件夹,处理日常办公的文件管理需求 不过,VBA是跟着Office软件才能用的,所以它的应用场景比较有限,基本上只能…

2026/7/25 5:22:10阅读更多 →
影刀RPA 负载测试自动化:JMeter脚本自动执行与报告

影刀RPA 负载测试自动化:JMeter脚本自动执行与报告

影刀RPA 负载测试自动化:JMeter脚本自动执行与报告 作者:林焱 | 分类:影刀RPA新手教程 | 难度:★★★ 什么情况用 性能测试工程师需要定期执行负载测试(如双11前的压测、新版本上线前的基准测试)。JMeter脚…

2026/7/25 5:22:10阅读更多 →
多功能料理机选购与使用指南:从原理到实践,提升厨房效率

多功能料理机选购与使用指南:从原理到实践,提升厨房效率

在实际厨房电器选购和日常使用中,多功能合一的料理机因其节省空间和操作便捷性而受到青睐。凯度(CASDON)小磨石F5是一款集厨余处理和面点制作于一体的二合一料理机,其核心卖点在于5.2L的大容量、顶部操控面板、一键手撕功能以及厨…

2026/7/25 5:22:10阅读更多 →
工业DPM码识别:抗强光干扰的光学与算法优化方案

工业DPM码识别:抗强光干扰的光学与算法优化方案

1. 工业读码场景下的DPM码识别痛点在汽车零部件、电子元器件、医疗器械等高端制造领域,直接部件标记(DPM)码已成为产品追溯体系的核心载体。与传统的纸质标签不同,激光雕刻或点刻形成的DPM码直接附着在金属、塑料等材料表面&#…

2026/7/25 6:52:25阅读更多 →
AI Agent时代数据库交互变革:从SQL到自然语言的智能数据服务架构

AI Agent时代数据库交互变革:从SQL到自然语言的智能数据服务架构

最近在调研如何让业务系统更“智能”时,发现一个明显的趋势:传统的数据库交互方式正在被重塑。过去,数据库主要是程序员通过SQL命令行或ORM框架来操作的工具,它的服务对象是“人”。而现在,随着AI Agent(智能体)的爆发,数据库正在成为AI Agent感知和操作世界的关键“手…

2026/7/25 6:52:25阅读更多 →
深度学习中的注意力残差机制解析与实践

深度学习中的注意力残差机制解析与实践

1. 注意力残差的概念解析注意力残差(Attention Residuals)是深度学习领域中一种创新的网络结构设计方法,它巧妙地将残差连接(Residual Connection)与注意力机制(Attention Mechanism)相结合。这…

2026/7/25 6:52:25阅读更多 →
姚顺雨接过腾讯混元“指挥棒“那天,大厂AI人才战进入新阶段

姚顺雨接过腾讯混元“指挥棒“那天,大厂AI人才战进入新阶段

7月24日下午,当腾讯内部邮件确认混元多模态模型部门与大语言模型部门合并为"基础模型部"时,姚顺雨面前摆着的不只是一张新的组织架构图。这位清华姚班出身、普林斯顿博士、从OpenAI归来不到一年的首席AI科学家,正在面对一个所有中国…

2026/7/25 6:52:24阅读更多 →
同步采样ADC深度解析:从原理到工业应用实战

同步采样ADC深度解析:从原理到工业应用实战

1. 项目概述与核心价值在工业控制和精密测量领域,我们常常需要同时捕捉两路或多路模拟信号,比如三相电机的电流电压、振动传感器的多轴数据,或者任何需要分析相位关系的信号对。这时候,一个常见的痛点就出现了:如果使用…

2026/7/25 6:52:24阅读更多 →
Windows Defender移除工具深度解析:3种高级模式实战指南与性能优化方案

Windows Defender移除工具深度解析:3种高级模式实战指南与性能优化方案

Windows Defender移除工具深度解析:3种高级模式实战指南与性能优化方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.co…

2026/7/25 6:50:24阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 1:01:14阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 1:01:14阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:01:16阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:01:16阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:01:16阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →