OD机试题笔记
文章平均质量分 79
OD 外包岗机试题解法笔记、编码训练、复习巩固算法与数据结构
xuwzen
软件开发(TypeScript/JavaScript/Java/C++/Python)、熟悉Web页面、数据可视化应用、图形渲染应用开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OD机试题解法笔记大纲+按知识点分类
无向图染色。原创 2025-06-12 12:15:59 · 721 阅读 · 0 评论
-
【OD机试题笔记】去除多余空格
去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。第一行:待去除多余空格的文本,用例保证如果有单引号,则单引号成对出现,且单引号可能有多对。第二行:关键词的开始和结束坐标,关键词间以逗号区分,关键词内的开始和结束位置以单空格区分。第二行:去除多余空格后的关键词的坐标开始和结束位置,为数组方式输出。之间有多余的空格,但是因为有成对单引号,不去除多余空格。第一行:去除多余空格后的文本。中间多余的空格进行删除。原创 2025-12-15 11:52:37 · 303 阅读 · 0 评论 -
【OD机试题笔记】员工派遣
找到最小的 k,使得可以将编号在 [1, k] 中的员工分配给 x 国和 y 国,且满足 x 国和 y 国的需求。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工。规则2:编号为 x 的倍数的员工不能去 x 国,编号为 y 的倍数的员工不能去 y 国。部门每个员工有一个员工号(1,2,3,…),工号连续,从1开始。规则1:从 [1, k] 中选择员工派遣出去。四个整数 x,y,cntx,cnty。3 表示国家2需要3个人。1 表示国家3需要1个人。原创 2025-12-06 10:35:57 · 432 阅读 · 0 评论 -
【OD机试题笔记】生成回文素数
如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数。例如,2,3,5,7,11 以及 13 是素数。如果一个数从左往右读与从右往左读是一样的,那么这个数是回文数,例如,12321 是回文数。求出大于或等于 N 的最小回文素数。原创 2025-12-06 10:46:48 · 215 阅读 · 0 评论 -
【OD机试题笔记】流浪地球
以时间为轴,模拟扩散过程,追踪每个节点的最早启动时间,本质是环形数组上的广度优先搜索(BFS)。如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被”关联启动”;如果准备启动某个发动机时,它已经被启动了,则什么都不用做;N代表部署发动机的总个数,E代表计划手动启动的发动机总个数。发动机启动的方式分为”手动启动"和”关联启动"两种方式;T代表发动机的手动启动时刻,P代表此发动机的位置编号。8个发动机,时刻0手动启动0,时刻1手动启动7.8个发动机,时刻0启动2和6号发动机。原创 2025-12-06 10:46:01 · 191 阅读 · 0 评论 -
【OD机试题笔记】猜数字
其中X表示位置正确的数的个数(数字正确且位置正确),而Y表示数字正确而位置不对的数的个数。每猜一个数,出数者就要根据这个数字给出提示,提示以XAYB形式呈现,直到猜中位置。当前已知N组猜谜者猜的数字与提示,如果答案确定,请输出答案,不确定则输出NA。例如,当谜底为8123,而猜谜者猜1052时,出题者必须提示0A2B。例如,当谜底为5637,而猜谜者才4931时,出题者必须提示1A0B。接下来N行,每一行包含一个猜测的数字与提示结果。输出最后的答案,答案不确定则输出NA。原创 2025-12-06 10:45:00 · 227 阅读 · 0 评论 -
【OD机试题笔记】分披萨
吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。接下来的第 2 行到第 N+1 (共 N 行),每行为一个正整数,表示第i块披萨的大小, 1≤i≤N。由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从“吃货”开始,轮流取披萨。已知披萨小块的数量以及每块的大小,求“吃货”能分得的最大的披萨大小的总和。至此,披萨瓜分完毕,”吃货“拿到的披萨总大小为 10+7+2=19。“馋嘴”每次都会选最大块的拨萨,而且“吃货”知道“馋嘴”的想法。原创 2025-12-06 10:43:59 · 577 阅读 · 0 评论 -
【OD机试题笔记】火星文计算
输入的字符串说明:字符串为仅由无符号整数和操作符(#、$)组成的计算表达式。12345678987654321$54321 //32位整数计算溢出。火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算。保证输入的字符串为合法的求值报文,例如:123#4$5#67$78。现有一段火星人的字符串报文,请你来翻译并计算结果。3+4-5*6/7 //有其它操作符。例如:123#4$5#67$78。#4$5 //缺少操作数。4$5# //缺少操作数。4#$5 //缺少操作数。输入 7#6$5#12。原创 2025-12-06 10:43:00 · 616 阅读 · 0 评论 -
【OD机试题笔记】几何平均值最大子数组
有多个长度至少为2的子数组的几何平均值为0.2,其中长度最短的为2,也有多个,长度为2且几何平均值为0.2的子数组最前面的那个为从第二个数开始的两个0.2组成的子数组。从一个长度为N的正数数组numbers中找出长度至少为L且几何平均值最大子数组,并输出其位置和大小。长度至少为2的子数组共三个,分别是{2,2}、{2,3}、{2,2,3},其中{2,3}的几何平均值最大,故输出其位置1和长度2。若有多个长度相同的子数组的几何平均值均为最大值,则输出最前面的子数组。原创 2025-12-06 10:42:21 · 419 阅读 · 0 评论 -
【OD机试题笔记】智能驾驶
有一辆汽车需要从 m * n 的地图左上角(起点)开往地图的右下角(终点),去往每一个地区都需要消耗一定的油量,加油站可进行加油。后面一个 M * N 的矩阵,其中的值是 0 或 -1 或正整数,加油站的总数不超过 200 个。行走的路线为:下→下→下→右→右→上→上→上→右→右→下→下→下。-1 :表示加油站,可以加满油,汽车的油箱容量最大为100;第一行为两个数字,M,N,表示地图的大小为 M * N。如果汽车可以到达终点,则返回最少的初始油量。行走的路线为:右→右→下→下→下→右。原创 2025-12-06 10:41:34 · 887 阅读 · 0 评论 -
【OD机试题笔记】转盘寿司
如果客户选择了第 i 盘寿司, 寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j ,前提是 prices[j] < prices[i],如果没有满足条件的 i ,则不赠送寿司。寿司转盘上总共有 n 盘寿司, prices[i] 是第 i 盘寿司的价格。每盘寿司的价格 price 范围为:1≤ price ≤1000。第 3 盘寿司价格 prices[3] 为 14。第 1 盘寿司价格 prices[1] 为 15。第 0 盘寿司价格 prices[0] 为 3。每个价格的寿司都可无限供应。原创 2025-12-06 10:40:38 · 299 阅读 · 0 评论 -
【OD机试题笔记】发广播
问题转化:将广播站和连接关系抽象为无向图,问题转化为求连通分量数量;工具选择:并查集或 DFS/BFS 均可,优先并查集(高效简洁);关键逻辑:每个连通分量只需初始发送一次广播,因此连通分量数 = 最少发送次数。原创 2025-12-05 15:02:54 · 746 阅读 · 0 评论 -
【OD机试题笔记】查找充电设备组合
当充电设备输出功率50、20、20组合时,其输出功率总和为90,最接近充电站最大充电输出功率,因此最优元素为90。选择功率为2,3的设备构成功率集合,总功率为5,最接近最大功率9。所有充电设备的输出功率组合,均大于充电站最大充电输出功率30,此时最优元素值为0。功率集合 P 的最优元素,表示最接近充电站最大输出功率 p_max 的元素。某个充电站,可提供 n 个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,构成功率集合 P 的 1 个元素。第 2 行为每个充电设备的输出功率。原创 2025-12-05 15:02:16 · 292 阅读 · 0 评论 -
【OD机试题笔记】高效的任务规划
算法选型:贪心算法,核心是通过最优局部选择推导全局最优解;排序规则:将机器按「执行时间J从大到小」排序(J相同无需额外处理,因B不影响核心逻辑),优先配置执行时间长的机器;核心计算维护sumB(累计配置时间):配置需串行执行,逐台累加每台机器的配置时间B;sumB + 该机器执行时间J(配置完成后机器并行执行,完成时间为配置累计时间+自身执行时间);总耗时为所有机器完成时间的最大值(并行执行下,最后完成的机器决定总耗时);流程。原创 2025-12-05 15:01:50 · 426 阅读 · 0 评论 -
【OD机试题解法笔记】数大雁
2.大雁会依次完整发出”quack”,即字符串中’q’ ,‘u’, ‘a’, ‘c’, ‘k’ 这5个字母按顺序完整存在才能计数为一只大雁。一个字符串,包含大雁quack的叫声。1 <= 字符串长度 <= 1000,字符串中的字符只有’q’, ‘u’, ‘a’, ‘c’, ‘k’。 3.如果字符串不是由’q’, ‘u’, ‘a’, ‘c’, ‘k’ 字符组合而成,或者没有找到一只大雁,请返回-1。一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。原创 2025-12-05 15:01:27 · 940 阅读 · 0 评论 -
【OD机试题笔记】没有回文串
现在已经存在一个不包含回文串的字符串,字符串的字符都是在英语字母的前N个,且字符串不包含任何长度大于等于2的回文串;第二行输入一个字符串(输入长度<=10000),输入保证这个字符串是合法的并且没有包含回文串。第一行有一个整数:N(1<=N<=26),表示字符串的每个字符范围都是前N的英语字母。请找出下一个字典序的不包含回文串的、字符都是在英语字母的前N个、且长度相同的字符串。输出下一个字典序的不包含回文串的、字符都是在英语字母的前N个、且长度相同的字符串;如果不存在,请输出NO。原创 2025-12-05 14:58:55 · 232 阅读 · 0 评论 -
【OD机试题笔记】排队游戏_刺头学生
刺头在0,1位置,2号同学不满程度2(前面两个刺头能力值都比他大),3号同学不满程度2,总不满程度4,大于3。对于非刺头同学,如果发现他前面有能力值比自己高的同学,他不满程度就增加,增加的数量等于前面能力值比他大的同学的个数。第二行为刺头所在位置(从0开始,即排队数组的下标,比如1代表队伍中第2个同学是刺头),位置的数组也是排序的。第三行有n个数,空格隔开,表示老师排好的队中每个人的能力值,其中非刺头同学一定按照能力值从小到大排好序的。如果整个班级累计的不满程度超过k,那么老师就没有办法教这个班级了。原创 2025-12-05 14:58:35 · 436 阅读 · 0 评论 -
【OD机试题笔记】编码能力提升计划
为了提升软件编码能力,小王制定了刷题计划,他选了题库中的n道题,编号从0到n-1,并计划在m天内按照题目编号顺序刷完所有的题目(注意,小王不能用多天完成同一题)。目标是找到最小的单日最大耗时T,使得能将n道题按顺序分成m段,每段可跳过1道耗时最大的题,剩余总耗时≤T。此外,小王还可以查看答案,可以省去该题的做题时间。在前三天中,小王每天都直接看答案,这样他可以在三天内完成所有的题目并不花任何时间。若题目数≤天数(n≤m),每天做1题并跳过,直接返回T=0。第二天完成第4题和第5题,第5题看答案;原创 2025-12-05 14:58:17 · 347 阅读 · 0 评论 -
【OD机试题笔记】污染水域
将输入字符串转为N×N矩阵,判断从初始污染点(1)向上下左右扩散污染所有纯净区域(0)的天数;若初始全污染或无法全污染,返回-1。数组中只有0和1,0表示纯净,1表示污染,每天只可污染上下左右的水域,如果开始全部被污染,或永远无法污染,则返回-1。输入一行字符串,字符串可转换为N*N的数组,数组可认为是一个水域,判断多少天后,水域被全部污染。否则返回全部污染花费的天数。逗号分割的NxN个数字。原创 2025-12-05 14:58:02 · 372 阅读 · 0 评论 -
【OD机试题笔记】可以处理的最大任务数
在某个项目中有多个任务(用tasks数组表示)需要您进行处理,其中tasks[i]=[si,ei],你可以在si <= day <= ei中的任意一天处理该任务,第一行为任务数量n,1 <=n<= 100000。后面n行表示各个任务的开始时间和终止时间,使用si,ei表示,1 <= si <= ei <= 100000。模拟「按天处理任务」的过程,每天优先处理「结束时间最早」的可用任务,确保不浪费当天时间,同时避免任务过期。输出为一个整数,表示可以处理的最大任务数。请返回你可以处理的最大任务数。原创 2025-12-05 14:57:16 · 478 阅读 · 0 评论 -
【OD机试题笔记】二进制差异数
现在有n个正整数A0到A(n-1),问有多少(i, j) (0<=i<j<n),Ai和Aj的差异值大于相似值。**差异值:**A、B转换成二进制后,对于二进制的每一位,对应位置的bit值不相同则为1,否则为0;**相似值:**A、B转换成二进制后,对于二进制的每一位,对应位置的bit值都为1则为1,否则为0;假设A=5,B=3;满足条件的分别是(0,1)(0,3)(1,2)(2,3),共4对。A与B的差异值十进制等于6,相似值十进制等于1,满足条件。数据范围:1<=n<=105,1<=A[i]<230。原创 2025-12-05 14:56:29 · 278 阅读 · 0 评论 -
【OD机试题解法笔记】食堂供餐
最低供餐速度,这个速度要满足食堂在当前单位时间做的盒饭数量满足下一轮员工取餐量。如果食堂库存盒饭满足所有员工取餐量则最低供餐速度是 0,直接返回结果0, 最大单位供餐数量 Max 肯定是所有员工数量总和减去库存数量。第 3 行为 N 个正整数,用空格分隔,依次表示开餐时间内按时间顺序每个单位时间进入食堂取餐的人数 Pi。需要满足排队时间为 0,必须保证取餐员工到达食堂时,食堂库存盒饭数量不少于本次来取餐的人数。为将员工取餐排队时间降低为 0,食堂的供餐速度必须要足够快。,可能会跳过真正的最小解。原创 2025-06-09 16:46:17 · 736 阅读 · 0 评论 -
【OD机试题解法笔记】 完全二叉树非叶子部分后序遍历
2、在 dfs 中先计算当前节点的左子节点索引 left = 2 * i + 1,如果left > 节点总是N,则return,表示是叶子节点,右子节点不用判断了,完全二叉树每一层节点是从左往右排列的,不存在只有右子节点情形;3、如果左节点不为空,则继续递归搜索左子节点 dfs(left),随后判断左子节点是否是叶子节点,如果不是加入结果列表中,在前面调用了dfs(left),所以这里加入结果列表位置刚好在其子节点之后,同理操作右子节点;只有一个节点的树,此节点认定为根节点(非叶子)。原创 2025-05-31 16:49:14 · 623 阅读 · 0 评论 -
【OD机试题解法笔记】核算检测
3、枚举感染人员id开始 dfs,遍历人员id,从0~N-1,排除自己,查询矩阵判断其它人员是否与感染人员接触且未访问,若是则统计结果+1,继续dfs (接触人员id),最终完成所有人员搜索返回统计结果。1、根据输入构建邻接矩阵,行列都是人员id,索引从0开始,mtx[rowIndex][colIndex] 表示人员rowIndex 与 人员 colIndex 是否接触(1:接触,0:未接触);0 表示没有接触,1 表示有接触。例如:A是确诊病例,A和B有接触、B和C有接触,C和D有接触,D和E有接触。原创 2025-06-05 11:58:59 · 370 阅读 · 0 评论 -
【OD机试题解法笔记】爱吃蟠桃的孙悟空
若吃桃速度为数量最大的桃树数量,则一定能吃完所有桃子,而吃桃的最小速度是1个/棵树,如果一颗树一小时吃不完,会导致总的吃桃时长超过桃树数量,而这种情形比较适合桃树数量少于守卫离开时长数。4、二分查找序列,不断把速度值向序列左侧边界推进,同时将每轮查找到满足规定时间吃完所有桃树桃子的速度与最小速度变量进行比较更新最小速度。孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉 K 个,如果树上的桃子少于 K 个,则全部吃掉,并且这一小时剩余的时间里不再吃桃。原创 2025-05-29 17:09:40 · 527 阅读 · 0 评论 -
【OD机试题多种解法笔记】城市聚集度/找城市
3、countDP函数实现,还是遍历nodes节点数组,对于参数removedNode跳过,用其它节点作为起始节点进行内层的广度优先遍历,遇到removedNode判为不可达,不加入临时队列,最终完成一次BFS统计当前节点的DP值,整个外层循环执行完成得到最大的DP值返回;2、遍历树节点,根据输入用例的节点连通关系调用并查集的union方法生成集合同时忽略掉当前节点(即移除当前节点),遍历parent数组统计每个连通集合的节点数目,取最大值作为当前移除节点的DP值,同时更新全局最小dp值和城市列表;原创 2025-05-30 23:16:25 · 1120 阅读 · 0 评论 -
【OD机试题解法笔记】无向图染色问题
4、紧接dfs(i + 1), 判断当前节点 i 的相邻节点是否有染过红色的,如果有则当前节点不能染红色,否则给当前节点染红色 color [i] = 1,继续染下一个节点 dfs( i + 1),这个和第三步的dfs(i + 1) 是染同一个节点 i+1,因为当前节点 i 的染色方案不同,dfs( i + 1)会有不同染色方案,最后回溯,重置当前节点颜色 colors[i] = -1;3、dfs函数内部逻辑:无条件给当前节点染黑色 colors[i] = 0,继续染色下一个节点dfs(i + 1);原创 2025-05-31 15:30:21 · 850 阅读 · 0 评论 -
【OD机试题+多种解法笔记】启动多任务排序
第二轮DFS遍历A,A的子节点们为[B,C],逆序得[C,B],取队首节点C继续DFS遍历C->[D], D在前面标记为访问过,回溯到C,标记C为已访问,加入结果列表[D E C],回溯到A,遍历B->[D],D在前面已经被标记访问过直接回溯B,标记B已访问,加入结果列表[D E C B],回溯到A,标记A已访问,加入结果列表[D E C B A],DFS遍历结束,对结果列表逆序得A B C E D,和题目给出的结果A E B C D不同,哪里错了?输出为排序后的启动任务列表,多个任务之间用单个空格分割。原创 2025-05-29 15:41:18 · 945 阅读 · 0 评论 -
【OD机试题解法笔记】5G网络建设
基站看成图中的节点,基站之间的铺设光纤成本看成是节点之间的权重,目标是把这些节点连起来形成的树总成本最低,总成本是累加连通的2个节点之间的权重,忽略已连接的节点之间权重。网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间假设光。注意:基站的联通具有传递性,比如基站A与基站B架设了光纤,基站B与基站C也架设了光纤,则基站A与基站C视为可以互相联通。如果给定条件,可以建设成功互联互通的5G网络,则输出最小的建设成本。原创 2025-06-01 20:05:22 · 548 阅读 · 0 评论 -
【OD机试题多种解法笔记】书籍叠放
这个是在二维序列上查找最长严格递减子序列,如果第一维序列存在无法严格递增的部分比如[5, 5, 3, 1],那么再在第二维递减序列上查找最长递减子序列就会出错,举个例子,输入书籍: [[5, 2], [5, 4],[4,3]],这个输出结果应该是1,因为长度都相等,不满足严格递减,但由于先按长度递减排序再按宽度递减排序,查找宽度序列[4, 3, 2]得出最长递减子序列长度是3,显然答案不对。输入排序后: [20,16]],[15,11],[10,10],[[9,10]。,长宽均大于 [10,10],故。原创 2025-06-02 21:22:29 · 533 阅读 · 0 评论 -
【OD机试题解法笔记】构成正方形的数量
正方形的对角线互相垂直,可以枚举每对坐标为一条对角线,然后旋转90度计算另一条对角线的2个端点坐标,判断计算的2个端点坐标是否存在于已知坐标集中,如果存在则找到一个正方形。假如我们要把向量 a 逆时针(旋转轴是从笛卡尔坐标系原点指向屏幕外面的轴,这个轴与屏幕垂直)旋转一个角度 φ 得到向量 b,如果 a 与x轴夹角是 α,长度 r = √(x_a^2 + x_b^2),则 x_a = r cosα, y_a = r sinα;4、判断坐标集中是否存在CD,存在则计数+1,最后将结果除以2得到正方形的数量。原创 2025-06-04 12:20:12 · 406 阅读 · 0 评论 -
【OD机试题解法笔记】快递员的烦恼
1、对客户id索引(1~N)求全排列使用递归+回溯,注意点是每次回溯时需要删除当前加入的对象,比如对[1,2,3]全排列时,临时列表tmp中是[1],继续递归到2时,tmp[1,2],递归到3时[1,2,3]得到一个排列,回溯时要删掉3,tmp为[1,2],3选过了没其它选择,继续回溯,删掉2,此时tmp为[1],可以选择 3 ,这是tmp是[1,3],如此循环;6、遍历n个客户(位置索引),从0到n-1,如果下个位置不是自身并且当前位置与下一个位置距离不是无穷大,证明是连通的,可以访问下一个位置看看。原创 2025-05-30 16:58:40 · 650 阅读 · 0 评论 -
【OD机试题+多种解法+算法可视化笔记】欢乐的周末
对于DFS,从小华小为位置开始递归搜索能到达的聚餐地点,如果某个聚餐地点能小华和小为访问,则计入可达聚餐地点数量统计;对于BFS,从聚餐地点开始搜索,用一个队列存储当前能够访问的位置,利用队列辅助搜索整个可访问的地图,若小华和小为的位置都被找到则把作为起点的聚餐地点加入可达聚餐地点统计。遇到边界或已访问过或数值为1的位置回溯,遇到聚餐地点3的位置时用map记录下并更新访问数+1,这个map是全局维护的聚餐地点可达人数,key是聚餐位置坐标,value是可达人数,当前value等于2时给count+1;原创 2025-05-28 16:04:57 · 1182 阅读 · 0 评论 -
【OD机试题解法笔记】士兵过河
(1)先分析一个士兵过河情形,当前敌军到达时间 T > a[0],则士兵能过河,存活数1,最短时间就是 a[0],否则不能过河,存活数0,最短时间 0;(2)假如有 2 个士兵,先计算两个人过河最短时长t1 = Min(Max(a[0], a[1]), a[0]*10, a[1]*10),如果t1 < T,则 2 个人都能过河,结果是存活 2,用时最短 t1,如果 t1 >= T,则 2 个人不能都过河,回到 (1) 的计算,这时候尝试让 a[0] 和 a[1] 过河时长最短的士兵过河;原创 2025-05-31 21:06:03 · 728 阅读 · 0 评论 -
【OD机试题解法笔记】电脑病毒感染
电脑看成无向图中的节点,电脑 i 感染 电脑 j 所需时间 t 看成边的权重,求单源最短路径问题,即从病毒源开始访问所有节点的最短路径集合中求最大值就是题目答案。相连接的电脑距离不一样,所以感染时间不一样,感染时间用 t 表示。从初始感染源出发,逐步扩展到所有可达节点,每次选择当前已知距离最小的节点进行处理,确保每个节点的最短路径被最早确定。如图:path[i] = {i, j, t} 表示:电脑 i->j,电脑 i 上的病毒感染 j,需要时间 t。数组中的最大值,即感染所有电脑所需的最少时间。原创 2025-06-05 17:07:55 · 587 阅读 · 0 评论 -
【OD机试题解法笔记】观看文艺演出问题
区间问题,每场演出有个开始时间和结束时间,先按结束时间对每场演出子区间从小到大排序,再遍历每场演出,如果当前演出开始时间大于上一场演出结束时间+15分钟,则把当前场次演出加入结果统计。为了庆祝党成立100周年,某公园将举行多场文艺表演,很多演出都是同时进行,一个人只能同时观看一场演出,且不能迟到早退,由于演出分布在不同的演出场地,所以连续观看的演出最少有15分钟的时间间隔,小明是一个狂热的文艺迷,想观看尽可能多的演出, 现给出演出时间表,请帮小明计算他最多能观看几场演出。第一行为一个数 N,表示演出场数。原创 2025-06-06 11:19:12 · 487 阅读 · 0 评论 -
【OD机试题多种解法笔记】小明减肥
小明有n个可选运动,每个运动有对应卡路里,想选出其中k个运动且卡路里和为t。k,t,n都是给定的。求出可行解数量输入描述第一行输入n t k第二行输入 每个运动的卡路里 按照空格进行分割备注0<n<10t>0,0<k<=n每个运动量的卡路里>0输出描述求出可行解数量示例1:输入4 3 21 1 2 3输出2说明可行解为2,选取{0,2},{1,2}两种方式。可以使用回溯法来枚举所有可能的k个运动的组合,并统计满足条件的组合数量。输入处理:读取输入的n、t、k和卡路里数组。回溯搜索:从第原创 2025-06-06 09:42:06 · 473 阅读 · 0 评论 -
【OD机试题解法笔记】部门人力分配
要求完成所有需求最大人力肯定不会大于所有需求人力之和,这是最大边界 r,那么问题就是在最小边界 l 和最大边界 r 中进行二分查找,找到最小能满足要求的人力。这种方法的时间复杂度主要由排序操作决定,为 O (N log N),二分查找的时间复杂度为 O (log S),其中 S 是需求总和,每次检查的时间复杂度为 O (N),因此总的时间复杂度为 O (N log N + N log S),可以高效处理题目给定的输入范围。使用双指针法,左指针指向最小的需求,右指针指向最大的需求。原创 2025-06-06 09:10:24 · 833 阅读 · 0 评论 -
【OD机试题解法笔记】在规定时间内获得最大报酬
规定时间内可获得的最大报酬,有工作时间限制,而且每项工作可选,判断是动态规划01背包问题,把工作时长比作背包容量,每项工作比作物品,工作花费时间比作物品体积,工作对应的报酬比作物品价值,即求物品放入背包能获得的最大价值。耗时时间(单位h)和报酬,工作的总报酬为所有已完成工作的报酬之和,那么请你帮小明安。小明每周上班都会拿到自己的工作清单,工作清单内包含n项工作,每项工作都有对应的。t代表该工作消耗的时长(单位h,t>0),w代表该项工作的报酬。排一下工作,保证小明在指定的工作时间内工作收入最大化。原创 2025-06-09 15:36:58 · 755 阅读 · 0 评论 -
【OD机试题解法笔记】报文响应时间
0b01110000对应十进制是112,所以 exp = code & 112,如果嫌十进制表示的112有点大,可以用十六进制0x70。IGMP 协议中,有一个字段称作最大响应时间 (Max Response Time) ,HOST收到查询报文,解折出 MaxResponseTime 字段后,需要在 (0,MaxResponseTime] 时间 (s) 内选取随机时间回应一个响应报文,如果在随机时间内收到一个新的查询报文,则会根据两者时间的大小,选取小的一方刷新回应时间。HOST发送响应报文的时间。原创 2025-06-09 18:58:19 · 845 阅读 · 0 评论
分享