小红书机考真题- 最小化峰值干扰 (Java/Py/C/C++/Js/Go)
小红书机考真题- 最小化峰值干扰整理历年互联网大厂机考、机试真题与面试真题覆盖校招、实习招聘等常见求职场景包含高频算法题、编程题、机考题及面试题并提供完整代码、解题思路、代码详解和在线 OJ 练习方便系统刷题和备战大厂技术面试。点击查看完整题库目录互联网大厂历年机考机试与面试真题题库代码详解在线OJ题目描述要将 m 项探测任务按给定顺序安排到连续 n 个时隙。第 j 个时隙的干扰强度为 aj第 i 项任务占用连续 bi 个时隙。记 li 为第 i 项任务的起始时隙则其占用区间为 [li,libi−1]。安排须满足任务占用互不重叠对任意 ij有 libi−1lj任务之间可空出任意个时隙。任务保持给定顺序l1l2⋯lm。均落在时隙范围内1≤li 且 libi−1≤n。峰值干扰为max ⁡ i 1 m max ⁡ j l i l i b i − 1 a j \max_{i1}^{m}\max_{jl_i}^{l_ib_i-1} a_ji1maxm​jli​maxli​bi​−1​aj​求所有合法安排下峰值干扰的最小值。输入描述第一行一个正整数 T表示测试数据组数。对于每组测试数据第一行两个正整数 n,m表示时隙数和任务数。第二行 n 个正整数 a1,a2,…,an表示每个时隙的干扰强度。第三行 m 个正整数 b1,b2,…,bm表示每项任务占用的时隙数。数据范围1≤T≤200000所有测试数据的 n 之和 ≤2000001≤n1≤m1≤ai≤10^91≤bi≤n∑bi≤n。输出描述对于每组测试数据输出一行一个整数表示峰值干扰的最小值。示例1输入2 7 2 8 1 3 5 2 1 4 2 3 6 3 2 8 1 1 3 1 1 1 2输出4 3说明第一组第一项任务放在 [2,3]覆盖 1,3最大值 3第二项放在 [5,7]覆盖 2,1,4最大值 4。峰值干扰为 max(3,4)4。若要求峰值不超过 3则时隙 1、4、7 不可用剩余连续段长度不足以放下长度为 3 的第二项任务。第二组三项任务分别放在时隙 1、3 与 [4,5]覆盖 211,3峰值干扰为 max(2,1,3)3。若要求峰值不超过 2则时隙 2、5 不可用无法为第三项任务找到长度为 2 的连续段。解题思路本题采用【二分答案 贪心】算法假设峰值干扰上限为x那么干扰强度大于x的时隙不能被任何任务占用其余时隙可以使用。问题转化为判断能否按给定顺序为每项任务找到长度为bi的连续可用区间。可行性检查时从左向右扫描时隙并让每项任务在剩余时隙中尽早结束。扫描过程中记录连续满足aj≤x的时隙数量达到当前任务长度后立刻安排该任务再从其结束位置之后继续安排下一项。最早结束会给后续任务留下最多空间若这种安排仍失败其他安排也不可能成功。随着上限x增大可用时隙只会增加可行性具有单调性。因此在干扰数组的最小值与最大值之间二分找到第一个能够完成全部任务的上限即为最小峰值干扰。Javaimportjava.util.Scanner;publicclassMain{staticbooleancanPlace(long[]a,int[]b,longlimit){intpos0;for(intneed:b){intrun0;while(posa.lengthrunneed){runa[pos]limit?run1:0;pos;}if(runneed)returnfalse;}returntrue;}staticlongsolve(long[]a,int[]b){// 答案位于干扰强度的最小值和最大值之间longlowa[0],higha[0];for(longvalue:a){lowMath.min(low,value);highMath.max(high,value);}// 二分最小可行峰值并用贪心检查任务能否按顺序放置while(lowhigh){longmidlow(high-low)/2;if(canPlace(a,b,mid))highmid;elselowmid1;}returnlow;}publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);inttsc.nextInt();StringBuilderoutnewStringBuilder();for(inttc0;tct;tc){intnsc.nextInt(),msc.nextInt();long[]anewlong[n];int[]bnewint[m];for(inti0;in;i)a[i]sc.nextLong();for(inti0;im;i)b[i]sc.nextInt();if(tc0)out.append(\n);out.append(solve(a,b));}System.out.println(out);}}Pythondefcan_place(a,b,limit):position0forneedinb:consecutive0whilepositionlen(a)andconsecutiveneed:consecutiveconsecutive1ifa[position]limitelse0position1ifconsecutiveneed:returnFalsereturnTruedefsolve(a,b):# 答案位于干扰强度的最小值和最大值之间low,highmin(a),max(a)# 二分最小可行峰值并用贪心检查任务能否按顺序放置whilelowhigh:middle(lowhigh)//2ifcan_place(a,b,middle):highmiddleelse:lowmiddle1returnlowdefmain():test_countint(input())answers[]for_inrange(test_count):n,mmap(int,input().split())alist(map(int,input().split()))blist(map(int,input().split()))answers.append(str(solve(a,b)))print(\n.join(answers))if__name____main__:main()JavaScriptconstreadlinerequire(readline);functioncanPlace(a,b,limit){letposition0;for(constneedofb){letconsecutive0;while(positiona.lengthconsecutiveneed){consecutivea[position]limit?consecutive1:0;position;}if(consecutiveneed)returnfalse;}returntrue;}functionsolve(a,b){// 答案位于干扰强度的最小值和最大值之间letlowa[0],higha[0];for(constvalueofa){lowMath.min(low,value);highMath.max(high,value);}// 二分最小可行峰值并用贪心检查任务能否按顺序放置while(lowhigh){constmiddleMath.floor((lowhigh)/2);if(canPlace(a,b,middle))highmiddle;elselowmiddle1;}returnlow;}constrlreadline.createInterface({input:process.stdin,crlfDelay:Infinity});constlines[];rl.on(line,linelines.push(line.trim()));rl.on(close,(){letk0;consttNumber(lines[k]);constout[];for(lettc0;tct;tc){const[n,m]lines[k].split(/\s/).map(Number);constalines[k].split(/\s/).map(Number);constblines[k].split(/\s/).map(Number);out.push(String(solve(a,b)));}console.log(out.join(\n));});C#includealgorithm#includeiostream#includevectorusingnamespacestd;boolcanPlace(constvectorlonglonga,constvectorintb,longlonglimit){intposition0;for(intneed:b){intconsecutive0;while(position(int)a.size()consecutiveneed){consecutivea[position]limit?consecutive1:0;position;}if(consecutiveneed)returnfalse;}returntrue;}longlongsolve(constvectorlonglonga,constvectorintb){// 答案位于干扰强度的最小值和最大值之间autoboundsminmax_element(a.begin(),a.end());longlonglow*bounds.first,high*bounds.second;// 二分最小可行峰值并用贪心检查任务能否按顺序放置while(lowhigh){longlongmiddlelow(high-low)/2;if(canPlace(a,b,middle))highmiddle;elselowmiddle1;}returnlow;}intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intt;cint;for(inttc0;tct;tc){intn,m;cinnm;vectorlonglonga(n);vectorintb(m);for(autox:a)cinx;for(autox:b)cinx;coutsolve(a,b)(tc1t?\n:\n);}}Gopackagemainimport(bufiofmtos)funccanPlace(a[]int64,b[]int,limitint64)bool{position:0for_,need:rangeb{consecutive:0forpositionlen(a)consecutiveneed{ifa[position]limit{consecutive}else{consecutive0}position}ifconsecutiveneed{returnfalse}}returntrue}funcsolve(a[]int64,b[]int)int64{// 答案位于干扰强度的最小值和最大值之间low,high:a[0],a[0]for_,value:rangea{ifvaluelow{lowvalue};ifvaluehigh{highvalue}}// 二分最小可行峰值并用贪心检查任务能否按顺序放置forlowhigh{middle:low(high-low)/2ifcanPlace(a,b,middle){highmiddle}else{lowmiddle1}}returnlow}funcmain(){in:bufio.NewReader(os.Stdin);out:bufio.NewWriter(os.Stdout);deferout.Flush()vartint;fmt.Fscan(in,t)fortc:0;tct;tc{varn,mint;fmt.Fscan(in,n,m);a:make([]int64,n);b:make([]int,m)fori:rangea{fmt.Fscan(in,a[i])};fori:rangeb{fmt.Fscan(in,b[i])}fmt.Fprintln(out,solve(a,b))}}C语言#includestdint.h#includestdio.h#includestdlib.hintcanPlace(constlonglong*a,intn,constint*b,intm,longlonglimit){intposition0;for(inttask0;taskm;task){intconsecutive0;while(positionnconsecutiveb[task]){consecutivea[position]limit?consecutive1:0;position;}if(consecutiveb[task])return0;}return1;}longlongsolve(constlonglong*a,intn,constint*b,intm){// 答案位于干扰强度的最小值和最大值之间longlonglowa[0],higha[0];for(inti1;in;i){if(a[i]low)lowa[i];if(a[i]high)higha[i];}// 二分最小可行峰值并用贪心检查任务能否按顺序放置while(lowhigh){longlongmiddlelow(high-low)/2;if(canPlace(a,n,b,m,middle))highmiddle;elselowmiddle1;}returnlow;}intmain(void){intt;if(scanf(%d,t)!1)return0;for(inttc0;tct;tc){intn,m;scanf(%d%d,n,m);longlong*amalloc((size_t)n*sizeof(longlong));int*bmalloc((size_t)m*sizeof(int));for(inti0;in;i)scanf(%lld,a[i]);for(inti0;im;i)scanf(%d,b[i]);printf(%lld\n,solve(a,n,b,m));free(a);free(b);}return0;}完整用例用例12 7 2 8 1 3 5 2 1 4 2 3 6 3 2 8 1 1 3 1 1 1 2用例23 1 1 7 1 5 1 5 4 3 2 1 5 5 5 9 1 8 2 7 1 1 1 1 1用例32 8 2 9 1 1 9 2 2 2 9 2 3 10 3 1 100 1 1 100 2 2 2 100 1 1 2 1用例42 6 2 1 1 9 2 2 2 3 2 6 2 1 1 9 2 2 2 2 3用例53 12 3 5 5 1 1 1 5 2 2 5 3 3 3 3 2 3 7 2 4 1 4 1 4 1 4 2 2 6 3 6 6 6 6 6 6 2 1 3用例63 7 2 1000000000 1 500000000 1 1000000000 2 2 2 2 6 2 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1 1 5 3 1 999999999 1 999999998 1 1 1 1用例73 10 2 10 9 8 7 6 5 4 3 2 1 2 2 10 3 1 2 3 4 5 6 7 8 9 10 3 1 2 9 4 5 1 5 1 5 1 5 1 5 1 1 1 1用例82 8 2 3 1 1 5 2 2 4 1 2 2 9 3 1 4 1 4 1 4 1 4 1 1 1 1用例92 6 2 1 1 8 2 2 2 2 3 6 2 1 1 8 2 2 2 3 2用例103 4 1 7 2 3 4 2 5 2 5 1 1 5 1 2 1 10 3 2 9 2 2 9 3 3 3 9 1 1 2 1

相关新闻

ESP32选型指南:WROOM、WROVER、S2、C3、S3核心差异与选型建议

ESP32选型指南:WROOM、WROVER、S2、C3、S3核心差异与选型建议

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 2:26:51 阅读更多 →
RedwoodJS v5 快速上手:从创建项目到 CRUD、Storybook、测试与部署的完整实战指南

RedwoodJS v5 快速上手:从创建项目到 CRUD、Storybook、测试与部署的完整实战指南

后端前端Web框架开发工具 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood 点击查看 免费下载 RedwoodJS 是一个面向全栈应用的 React 框架,它将前端(React GraphQL)、后端&#…

2026/9/24 2:26:51 阅读更多 →
ps 命令速查:Linux/Unix 进程状态查看的完整实战指南

ps 命令速查:Linux/Unix 进程状态查看的完整实战指南

文档知识库教程开发工具 【免费下载链接】reference 为开发人员分享快速参考备忘清单(速查表) 项目地址: https://gitcode.com/jaywcjlove/reference 点击查看 免费下载 Linux 为我们提供了一个名为 ps 的实用程序,用于查看与系统上的进程相关的信息&am…

2026/9/24 2:26:51 阅读更多 →

最新新闻

旧华为手机救砖降级实战:MRT HW Tool一键脚本避坑指南

旧华为手机救砖降级实战:MRT HW Tool一键脚本避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 8:02:22 阅读更多 →
板载声卡跑ASIO实战:官方驱动实现低延迟直播唱歌

板载声卡跑ASIO实战:官方驱动实现低延迟直播唱歌

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 8:02:22 阅读更多 →
Kornia 2D 边界框形状校验修复:`infer_bbox_shape` 与 `bbox_to_mask` 拒绝 rank-4 批处理输入并抛出 `ShapeError`

Kornia 2D 边界框形状校验修复:`infer_bbox_shape` 与 `bbox_to_mask` 拒绝 rank-4 批处理输入并抛出 `ShapeError`

计算机视觉人工智能深度学习图像处理 【免费下载链接】kornia 🐍 Geometric Computer Vision Library for Spatial AI 项目地址: https://gitcode.com/gh_mirrors/ko/kornia 点击查看 免费下载 本文解读 Kornia 几何模块中的一项行为修复(对…

2026/9/24 8:02:22 阅读更多 →
WinPE运维实战:从删除顽固文件到离线杀毒的完整指南

WinPE运维实战:从删除顽固文件到离线杀毒的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 8:02:22 阅读更多 →
轨道交通EMC屏蔽关键:铍铜弹片选型与安装实战指南

轨道交通EMC屏蔽关键:铍铜弹片选型与安装实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 8:02:22 阅读更多 →
LeetCode-1. 两数之和

LeetCode-1. 两数之和

这里写目录标题方法一 暴力法方法二Python3 字典 (dict) 学习笔记一、字典语法格式二、创建字典1. 创建空字典2. 普通字典创建三、访问字典的值1. [键]方式取值2. 安全取值 get ()四、修改字典update () 批量更新五、删除字典元素pop / popitem方法一 暴力法 class Solution:d…

2026/9/24 8:01:22 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →