- 博客(1549)
- 收藏
- 关注

原创 机试真题目录
**2024年8月份,华为官方已经将华为OD机考:OD统一考试(D卷)切换到 OD统一考试(E卷)** 。从参加过华为OD笔试的朋友来看,**E卷的新题非常少,大部分是A,B,C,D卷的合并题库。** 另一方面据考生反应需要双机位,也就是在牛客小程序中一直点确认,最后一步需要调试并开启您的摄像头。
2023-11-30 14:28:44
55709
24
原创 【2025年菜鸟秋招(算法岗)-8月29日-第三题(300分)- 小红的红色矩阵】(题目+思路+Java&C++&Python解析+在线测试)
小红有一个 nn 行 mm 列的矩阵,其中有一些格子已经被染成了红色。小红将进行一次操作:随机选择一个格子,将其染成红色(如果该格子本身为红色,那么不进行任何改变)。小红想知道,进行了一次操作以后,红色连通块数量的期望是多少?我们定义两个红色格子连通,当且仅当它们共用同一条边。可以证明,最终的期望 EE 是个有理数。你需要输出 EE 对 109+710 9 +7 取模的值。分数取模的定义: abba %p=xp=x (%代表取模) 等价
2025-08-30 12:11:37
原创 【2025年菜鸟秋招(算法岗)-8月29日-第二题(200分)- 某新零售食品连锁企业的决策】(题目+思路+Java&C++&Python解析+在线测试)
该文章摘要介绍了如何为一个新零售食品连锁企业实现决策树算法中的信息熵计算功能。文章给出了信息熵的计算公式,并详细说明了输入数据的格式要求(二维列表,最后一列为类别标签)。通过Python代码示例展示了完整的实现过程:读取输入数据、统计类别数量、计算比例、代入公式求熵值并保留三位小数输出。代码使用了math库的log函数,并处理了避免对0取对数的情况。该实现能够帮助企业通过数据驱动优化业务决策和提高运营效率。
2025-08-30 12:10:08
原创 【2025年菜鸟秋招(算法岗)-8月29日-第一题(100分)- 小红的排列】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求通过最少的操作将给定排列转换为严格递增序列。每次操作可选择两个不同位置,一个加1,一个减1,同时保持数组仍为排列。关键在于发现这类操作等价于交换相邻数值的位置。最少操作次数等于初始排列的逆序数,可通过类似冒泡排序的方法实现:反复检查并交换相邻逆序对,直到序列有序。解决方案使用位置数组记录各数值的位置,并通过交换操作逐步修正逆序对,最终输出所需操作及其顺序。
2025-08-30 12:08:57
原创 【2025年饿了么秋招(开发岗)-8月29日-第三题(300分)- 三元组】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了在给定区间内满足特定条件的三元组计数问题。通过数学分析发现,仅存在两类有效三元组:(3k,4k,6k)和(6k,10k,15k)。对于每类三元组,计算其在该区间内的可能数量:第一类要求k∈[⌈l/3⌉,⌊r/6⌋],第二类要求k∈[⌈l/6⌉,⌊r/15⌋]。最终结果为两类三元组数量的总和。该解法避免了暴力枚举,利用数学推导将时间复杂度优化至O(1)每查询。
2025-08-30 12:06:17
原创 【2025年饿了么秋招(开发岗)-8月29日-第二题(200分)- 元素最大和】(题目+思路+Java&C++&Python解析+在线测试)
题目解析摘要: 给定数组和整数k,通过删除和为k的倍数的数对,使剩余元素和最大。解题步骤: 按元素对k的余数分组 处理特殊余数(0和k/2):同类两两删除,最多留1个,优先删最小元素 处理互补余数对(r和k-r):删除较小数量元素中的最小值 计算剩余元素和 样例解释: 输入1:3个数[1,7,4],k=4 余数组:1:[1],3:[7],0:[4] 无互补对可删,保留所有元素和12 但实际输出4,说明题目理解有误 复杂度: O(nlogn) 主要来自排序操作 (注:原摘要150字限制过严,此为精简版)
2025-08-30 12:04:36
原创 【2025年饿了么秋招(开发岗)-8月29日-第一题(100分)- bigbong的数组】(题目+思路+Java&C++&Python解析+在线测试)
题目要求构造一个小于给定整数x的非负整数y,使得x和y的数位和相等。若无解则输出-1。 解题思路是:找到x中某位可以减1(该位≥1且后面不全为9),将该位减1后重新分配后续数位使其和增加1。若x为0、单个数字或形如前导0+非零数字+全9的形式则无解。算法通过预处理后缀和及全9标记来高效判断可解性,时间复杂度为O(n)。代码实现包括特判处理和构造输出。
2025-08-30 12:02:47
原创 【2025年饿了么秋招(算法岗)-8月29日-第三题(300分)- 好串】(题目+思路+Java&C++&Python解析+在线测试)
本文解决了一个字符串填充问题,要求计算使最终字符串包含至少k个连续'B'的填充方案数。主要思路是采用反向计数法,用总方案数减去不满足条件的"坏方案"数。通过动态规划在O(n)时间内计算坏方案数:定义dp[i]为前i位的合法填充数,g[i]为以'W'结尾的方案数。转移时考虑当前位填'W'或'B'的情况,特别处理可能形成k连'B'的情况。当k=1时需特殊处理。最终答案为2^cntX - bad方案数,取模10^9+7。该方法高效处理了n≤10^6规模的问题。
2025-08-30 12:00:39
原创 【2025年饿了么秋招(算法岗)-8月29日-第二题(200分)- 长度为n的排列】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求构造一个与给定排列 $a$ 相似的排列 $b$,即除整个区间 $[1,n]$ 外,所有子区间的和都不相等。通过分析发现,将 $a$ 循环左移一位得到的排列 $b$(即 $b_i=a_{i+1}$,$b_n=a_1$)满足条件,因为任意真子区间的和与原排列的差为 $a_{r+1}-a_l≠0$。该方法时间复杂度为 $O(n)$,适用于大规模数据。示例代码展示了如何高效实现这一构造。
2025-08-30 11:59:04
原创 【2025年饿了么秋招(算法岗)-8月29日-第一题(100分)- 矩阵字典序】(题目+思路+Java&C++&Python解析+在线测试)
矩阵字典序最大化交换策略 核心思路 对于n×m矩阵,通过交换不相邻元素实现字典序最大化。关键在于判断能否实现任意排列: 当矩阵尺寸非特殊(非1×2/3或2×2)时,可通过间接交换实现相邻元素交换,从而获得任意排列,此时只需将元素降序排列即可。 特殊小矩阵需单独处理: 1×3或3×1矩阵只能交换首尾元素 2×2矩阵只能交换对角线元素 算法步骤 读取输入矩阵 判断矩阵类型: 可任意排列:降序排序后重构矩阵 特殊矩阵:枚举所有可能的交换方案,选择字典序最大的 输出结果矩阵 复杂度分析 一般情况:O(nm log
2025-08-30 11:57:48
原创 【2025年华为秋招(留学生)-8月28日-第二题(200分)- Group卷积实现】(题目+思路+Java&C++&Python解析+在线测试)
摘要:该题目要求实现一个支持分组卷积和深度卷积前向传播的函数。给定输入张量、卷积核及其形状和分组数,需计算输出张量结果。关键条件包括通道数必须能被分组数整除,且卷积核通道数必须等于输入通道数除以分组数。若形状不合法或输出尺寸非正,则返回-1。解决方案需解析输入数据,验证约束条件,然后通过六重循环计算卷积结果,最后按要求格式输出。
2025-08-29 00:45:59
11
原创 【2025年华为秋招(留学生)-8月28日-第一题(100分)- 基于决策树预判资源调配优先级】(题目+思路+Java&C++&Python解析+在线测试)
摘要:本文介绍了如何实现决策树分类算法,用于无线通信系统中的资源优先级调配。决策树模型根据输入特征(如时间段、天气等)预测网络负载并确定资源分配优先级。算法通过读取决策树节点结构(包括分裂特征、阈值、子节点和分类结果),对每个样本进行遍历直到到达叶节点并输出分类结果。提供了C++、Python和Java三种语言的实现方案,时间复杂度为O(n·h),空间复杂度为O(m)。
2025-08-29 00:44:47
21
原创 【2025蚂蚁集团秋招(算法岗)-8月28日-第三题(300分)- 禁止贴贴】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了在教室椅子排布约束下的最大容纳人数问题。给定n把编号椅子,要求相邻椅子不能同时坐人。q次操作每次切换指定椅子的可用状态,需要实时计算当前最大容纳人数。 关键思路是将问题转化为维护分隔点之间的连续可用区间。通过引入哨兵点,将问题转化为计算各区间长度函数f(L)=(L+1)/2的和。使用平衡树(如Treap)维护分隔点集合,支持O(log q)时间的前驱/后继查询和插入/删除操作。每次操作只需局部更新相邻区间对答案的影响,整体复杂度为O(q log q)。 该方法高效处理了大规模数据(n≤1e9,q≤
2025-08-29 00:43:17
31
原创 【2025蚂蚁集团秋招(算法岗)-8月28日-第二题(200分)- 基于孤立森林的异常检测实现】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种基于孤立森林算法的网络流量异常检测方法。该方法通过构建随机二叉树来识别异常样本,具有处理高维数据和噪声的能力。算法实现主要包括以下步骤: 数据准备:读取N个样本的M维特征数据。 参数设置:获取树的数量T和每棵树的子样本数ψ。 模型训练:为每棵树随机采样ψ个样本,构建高度限制为⌈log₂ψ⌉的随机二叉树。 异常评分:计算每个样本在树中的平均路径长度,使用公式score=2^(-E_h/c)计算异常分数。 结果判定:将分数>0.5的样本标记为异常(1)。 该方法能有效识别具有较短平均路径长度
2025-08-29 00:42:20
31
原创 【2025蚂蚁集团秋招(算法岗)-8月28日-第一题(100分)- 小红的比赛计分】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 题目要求判断在n轮比赛中,裁判记录的得分序列是否可能在某时刻出现a:b的比分。比赛每轮胜者得1分,裁判用R表示小红赢,W表示对手赢。若存在某个前缀的R和W数量恰好为a和b,则输出ac,否则输出wrong。 输入包含多组测试数据,每组给出比赛轮数n、比分a:b和裁判记录字符串s。所有测试用例的n之和不超过2×10^5。输出每组判断结果。 例如样例1中,第二轮结束时比分2:0与记录相符,输出ac;而样例2中比分0:1与记录矛盾,输出wrong。
2025-08-29 00:40:37
34
原创 【2025年华为秋招(开发岗)-8月27日-第三题(300分)- 命令行参数提示】(题目+思路+Java&C++&Python解析+在线测试)
题目解析 本题要求实现一个命令行工具的子命令错误纠正功能。核心是根据用户输入的错误命令,从已知子命令列表中找到最相似的命令进行提示。相似度通过Levenshtein距离(编辑距离)来衡量。 解题思路 精确匹配检查:首先检查用户输入是否完全匹配某个子命令,若匹配则直接输出。 计算编辑距离:对于未精确匹配的情况,计算用户输入与每个子命令的编辑距离。编辑距离定义为将一个字符串通过替换、插入、删除操作转换为另一个字符串所需的最少步数。 筛选候选命令:收集所有编辑距离在给定阈值D(1≤D≤5)范围内的子命令。 排序与
2025-08-28 01:49:44
132
原创 【2025年华为秋招(开发岗)-8月27日-第二题(200分)- 樱桃等级筛选】(题目+思路+Java&C++&Python解析+在线测试)
这篇文章摘要如下: 该问题要求将樱桃尺寸分组数据划分为m个等级,使得各组内樱桃数量的标准差最小。输入包括樱桃组数n和等级数m,以及每组樱桃数量数组。通过动态规划或DFS枚举所有可能的分割方案,计算各组和的标准差,找到最优分割序列。算法利用前缀和快速计算区间和,DFS递归枚举各段长度,维护当前最优解。当分割到第m段时,计算所有段和的标准差并更新最优解。时间复杂度由DFS的指数级优化为可行范围,适用于n≤20的输入规模。
2025-08-28 01:48:42
141
原创 【2025年华为秋招(开发岗)-8月27日-第一题(100分)- 冬季暖系统温度稳定性分析】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要 该题目要求评估小区冬季采暖系统的恒温效果。给定连续N次室内温度采样数据,需找出满足以下条件的最长连续时段: 所有温度值在18-24摄氏度范围内; 时段内最高与最低温度差不超过4摄氏度。 输出所有满足条件的最大持续时段的起止索引(从0开始)。若存在多个相同长度的时段,按起始索引升序输出。 输入:第一行为采样次数N,第二行为N个温度值。 输出:每行一个满足条件的起止索引对。 示例: 输入: 6 16 18 20 25 23 20 输出: 1 2 4 5 说明:索引1-2和4-5的温度段均满足恒温要求。
2025-08-28 01:47:47
153
原创 【2025年阿里控股/淘天/智能信息/菜鸟驿站秋招- 8月27日 -第二题(200分)- 升数】(题目+思路+Java&C++&Python解析+在线测试)
我们称一个正整数为"升数",当且仅当其十进制表示的各位数字从高位到低位单调不降(例如 1123、51123、5 )。给定一个正整数 mm 和查询次数 QQ 。每个查询给出一个正整数 dd 。请统计所有不超过 mm 的升数中,数位之和能被 dd 整除的升数个数。【名词解释】升数:升数 是其十进制表示中,除首位外每个数字不小于其左侧相邻数字的正整数。
2025-08-28 01:46:15
9
原创 【2025年阿里控股/淘天/智能信息/菜鸟驿站秋招- 8月27日 -第一题(100分)- 三好子序列】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求从给定数组中找出满足特定条件的"三好子序列"并使其元素和最大。关键观察是:子序列中相邻元素之和必须能被3整除。通过将元素按模3余数分类,发现最大和可能来自两种情况:1) 全部取余数为0的元素;2) 交替取余数为1和2的元素。使用动态规划维护以余数1和2结尾的最大和子序列,最终比较两种情况取最大值。时间复杂度O(n),空间复杂度O(1)。
2025-08-28 01:44:44
13
原创 【2025年小红书秋招(算法岗)-8月27日-第三题(300分)- 字符串min1】(题目+思路+Java&C++&Python解析+在线测试)
本文提出了一种优化小红书笔记标签字符串的方法,通过双向字符置换操作来获得最小字典序结果。算法核心思想是: 优先尝试将更小的字符左移到更前位置,使用滑动窗口技术(单调队列)在O(n)时间内找到最优交换位置 若无更小字符可移动,则考虑通过后段交换降低字典序,维护字符位置队列来寻找最优交换对 关键点在于: 分析操作对字符串的影响特性 设计高效的滑动窗口和队列结构来寻找最优解 时间复杂度为O(n),适用于长字符串处理 样例展示了对"baced"进行(2,4,1)操作后得到最优解"abc
2025-08-28 01:43:07
21
原创 【2025年小红书秋招(算法岗)-8月27日-第二题(200分)- 服务节点布局】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求在小红书服务器节点网络中部署最少服务点,使得每个节点都能在不超过其信号限制 $d_i$ 的范围内访问到至少一个服务点。将每个节点的可接受服务点范围转化为区间 $[l_i, r_i]$,其中 $l_i = \max(1, i - d_i)$,$r_i = \min(n, i + d_i)$。问题转化为选择最少的点覆盖所有区间。通过贪心算法,按右端点排序后依次在未被覆盖的区间右端点部署服务点,确保最优解。时间复杂度为 $O(n \log n)$,适用于大规模数据。
2025-08-28 01:42:01
8
原创 【2025年小红书秋招(算法岗)-8月27日-第一题(100分)- 完美数字】(题目+思路+Java&C++&Python解析+在线测试)
这是一道关于判断数字是否为连续正整数乘积的问题。题目要求判断给定的正整数x是否可以表示为长度至少为3的连续正整数的乘积。 解题思路: 预处理所有可能的连续正整数乘积(长度≥3),存入集合。 对于每个查询x,只需检查是否存在于预处理的集合中。 关键点: 枚举起点a和长度k,计算a*(a+1)...(a+k-1),确保乘积≤10^9。 由于最短长度为3,a的上界约为1000;长度k最多约13次乘法即超过10^9,预处理规模可控。 复杂度: 预处理时间O(10^4),查询O(1)。 样例解释: 6=123 → Y
2025-08-28 01:40:19
13
原创 【2025年华为秋招(AI)-8月27日-第三题(300分)- F1值最优的决策树剪枝】(题目+思路+Java&C++&Python解析+在线测试)
决策树生成算法递归地产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。在决策树学习中将已生成的树进行简化的过程称为剪枝。具体地,剪枝从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。小$A$希望通过决策树的方法解决一个二分类任务。在该二分类的任务中,标签 $1$ 是正分类,标签 $0$ 是负分类。现在小A已经训练了一个未剪枝的二分类的决策树。他希望对该决策树进行剪枝,能够在验证
2025-08-28 01:38:34
478
原创 【2025年华为秋招(AI)-8月27日-第二题(200分)- 标签样本数量】(题目+思路+Java&C++&Python解析+在线测试)
KNN算法通过计算待分类样本与训练样本的距离,选取最近的K个邻居,根据这些邻居的多数类别确定分类结果。算法步骤如下:(1)计算待分类样本到所有训练样本的欧氏距离;(2)按距离排序并选择前K个最近邻;(3)统计这些邻居的类别频率;(4)若出现最高频率并列,则选择距离最近的邻居类别作为结果。输入包含K值、样本数量、特征维度和类别数,以及待分类样本和训练数据;输出为预测类别及其在K个邻居中的出现次数。该算法适用于小规模数据集,处理时需注意距离计算和并列情况的处理规则。
2025-08-28 01:38:26
205
原创 【2025年华为秋招(AI)-8月27日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)
1-5: CCBDD 6-10: CAADC 11-15: DCDAC 16-20: ABACA 解析: 代码实现全连接+Softmax;2. 位置编码提供序列顺序;3. Jacobi迭代得(1.5,1);4. 幻觉无法完全消除;5. 不同特征值向量组合非特征向量;6. [2,-2]距C2中心最近;7. 零空间维度=1;8. 实对称矩阵特征值为实数;9. SVD分解不唯一;10. 晋级最少胜场公式选D;11. 概率密度积分为1;12. 增大C和γ会提高复杂度;13. Tokenizer转文本为ID;14.
2025-08-28 01:38:17
24
原创 【2025年滴滴秋招-8月26日-第二题(200分)- 寻宝之旅】(题目+思路+Java&C++&Python解析+在线测试)
本文研究了一个n×n网格中的宝藏收集问题,通过动态规划算法求解从左上角出发,在离开网格前能获得的最大宝藏价值。算法采用二维状态转移方程,其中dp[i][j]表示进入房间(i,j)时的最大收益。转移时考虑两种选择:不拿宝藏向下移动或拿宝藏向右移动。最终答案通过比较网格下边界和右边界的最大值确定。算法的时间复杂度为O(n²),空间复杂度为O(n²),满足题目给定的数据规模约束。提供了C++、Python和Java三种实现版本。
2025-08-27 20:24:24
15
原创 【2025年滴滴秋招-8月26日-第一题(100分)- 你的一半归我了】(题目+思路+Java&C++&Python解析+在线测试)
摘要:给定一个数组,每次操作可以选择一个元素,将其半值(向下取整)转移到第一个元素,要求最少操作次数使得第一个元素成为严格最大值。解法是使用最大堆,每次取出当前最大元素进行转移,直到第一个元素超过所有其他元素。时间复杂度为O(n log n),适用于大规模数据。
2025-08-27 20:22:55
15
原创 【2025年菜鸟秋招(算法岗)-8月26日-第三题(300分)- 新奇运算】(题目+思路+Java&C++&Python解析+在线测试)
在神奇的数学岛上,岛民们使用一种独特的符号系统来进行日常计算。在这个世界中,仅存在小写字母 $a$ ~ $z$ ,以及数字字符 $1,2,3,4$ ,但是它们所代表的含义与现实世界有所不同。小写字母依次对应数字 $0$ ~ $25$ ,例如:小写字母 $a$ 代表数字 $0$ ,小写字母 $x$ 代表数字 $23$ 。数字字符 $1,2,3,4$ 分别对应着运算符 $+、-、×、÷$ ,其中,数字字符 $4$ 所对应的除法运算指的是向下取整除法,即在数学岛上没有小数的概念。
2025-08-26 12:13:56
15
原创 【2025年菜鸟秋招(算法岗)-8月26日-第二题(200分)- 新闻推荐处理】(题目+思路+Java&C++&Python解析+在线测试)
该摘要描述了一个新闻推荐系统中计算用户阅读类别信息熵的Python实现。信息熵衡量用户阅读兴趣的多样性,计算公式为H=-Σp_i*log₂p_i,其中p_i是某类新闻的阅读概率。程序从标准输入读取JSON格式的用户阅读历史数据,计算每个用户的信息熵并保留3位小数,最后输出JSON格式的结果。关键步骤包括计算各类别阅读概率、处理零值情况、对数运算和结果格式化。样例展示了输入输出格式,三个用户尽管阅读次数分布不同,但信息熵值相同(1.459)。
2025-08-26 12:13:14
13
原创 【2025年菜鸟秋招(算法岗)-8月26日-第一题(100分)- 小苯的数字权值】(题目+思路+Java&C++&Python解析+在线测试)
摘要 题目要求将正整数x分解为若干大于1的因子之积,使得各因子权值(因子个数)之和最大。通过分析得出:最优解为x自身的因子个数τ(x)或分层和∑2^r中较大者,其中r是质因数分解中各质因子幂次≥当前层数ℓ的个数。算法步骤包括:质因数分解x,计算τ(x),求最大幂次A,计算各层2^r之和,最后取较大值输出。代码实现采用试除法分解质因数,并分别计算两种策略的结果进行比较。
2025-08-26 12:12:51
610
原创 【2025年得物秋招-8月24日-第二题(200分)- 抽卡】(题目+思路+Java&C++&Python解析+在线测试)
题目要求安排抽卡顺序以获得最大钱数,其中每张卡片提供钱数和额外抽卡次数。解题思路是优先抽取能增加抽卡次数的卡片(b≥1),以最大化后续抽卡机会;然后按钱数从高到低抽取剩余卡片(b=0)。这样可确保在不浪费抽卡次数的前提下获得最高收益。算法时间复杂度为O(n log n),主要来自排序步骤。输入为卡片数量n及每张卡的钱数和抽卡次数,输出为能获得的最大钱数。
2025-08-25 11:27:03
17
原创 【2025年得物秋招-8月24日-第一题(100分)- 完美平均】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 题目要求通过添加最少非负整数,使数组元素的平均值为1。设原数组元素和为S,长度为n。若S=n,已满足条件,无需添加;若S<n,添加1个数即可;若S>n,需添加S-n个0使平均值降至1。时间复杂度为O(n)。
2025-08-25 11:25:57
16
原创 【2025年小红书秋招(算法岗/开发岗)-8月24日-第三题(300分)- 每日一题plus】(题目+思路+Java&C++&Python解析+在线测试)
字符串处理算法解析 问题概述 给定一个由小写字母组成的字符串,要求删除最少数量的字符,使得剩余字符串中各字母出现次数满足非严格递增顺序(a ≤ b ≤ ... ≤ z)。在满足条件的字符串中,选择字典序最小的一个作为输出。 关键算法 频率统计与配额计算: 统计原始字符串中各字母出现频率 从字母z到a反向计算配额,确保每个字母的配额不超过其原始频率且满足非递减条件 构建最小字典序字符串: 使用单调栈结构从左到右扫描字符串 在保证后续能补足所需字母的前提下,尽可能选择字典序较小的字符 维护当前所需各字母数量及剩
2025-08-25 11:24:37
19
原创 【2025年小红书秋招(算法岗)-8月24日-第二题(200分)- 贪心的小C】(题目+思路+Java&C++&Python解析+在线测试)
摘要 该问题要求将n名士兵划分为k个连续军团,使得各军团最低能力值之和最大化。通过动态规划(DP)结合稀疏表优化,可以高效解决。关键思路是:预处理每个位置左边小于当前值的位置,利用值域小的特点将转移复杂度降至O(100n)。最终在O(k*(nlogn + 100n))时间内求解,适用于n≤1e4,k≤100的规模。样例1(5名士兵分2军团)最优解为6,样例2(5名分3军团)最优解为9。
2025-08-25 11:23:29
18
原创 【2025年小红书秋招(开发岗)-8月24日-第二题(200分)- 潜在同好】(题目+思路+Java&C++&Python解析+在线测试)
这篇文章介绍了一种高效算法,用于在社交推荐系统中快速计算用户间的"同好"关系。给定n个用户的行为分数和m次查询,每次查询需要统计数据库中能与给定分数x构成"同好"关系(即x能整除对方或被对方整除)的用户数量。 关键思路是: 预处理两个数组:divCnt[x]统计所有能整除x的分数出现次数,mulCnt[x]统计所有能被x整除的分数出现次数。 查询结果即为divCnt[x] + mulCnt[x],并减去重复计数的等于x的情况。 算法通过数论方法优化,预处理复杂度为O(
2025-08-25 11:21:50
20
原创 【2025年小红书秋招(算法岗/开发岗)-8月24日-第一题(100分)- 行为权重】(题目+思路+Java&C++&Python解析+在线测试)
文章摘要: 题目要求从用户行为序列中选取不相邻的子序列,使其权重值的最大公约数大于1,求最多可选数量。解题关键在于:1) 枚举100以内的质数p;2) 对每个p,标记能被其整除的位置;3) 使用动态规划(类似"打家劫舍"问题)计算不相邻标记位的最大数量。算法复杂度为O(25n),适用于大输入规模。Python/Java/C++实现均通过预处理质数表,并对每个质数进行线性DP求解,最终取所有质数结果的最大值。
2025-08-25 11:20:17
16
原创 【2025蚂蚁集团秋招(开发岗)-8月24日-第三题(300分)-树上感染序列计数】(题目+思路+Java&C++&Python解析+在线测试)
题目摘要:给定一棵n个节点的无根树,根为1。初始时仅根节点被感染,每天感染会向任意一个已感染节点的健康邻居蔓延。要求在n-1天内感染整棵树的不同方案数,对10^9+7取模。关键思路是将问题转化为计算满足父子偏序关系的线性扩展数,使用树形DP和多重组合数公式求解。预处理阶乘后,通过后序遍历计算每个子树的方案数,最终合并得到总方案数f(1)。
2025-08-25 11:18:19
38
原创 【2025蚂蚁集团秋招(开发岗)-8月24日-第二题(200分)- 闪避】(题目+思路+Java&C++&Python解析+在线测试)
笨蛋同学正在一款游戏中打 boss,虽然她拥有无限血量,但她发现闪避后的反击伤害可能比直接攻击更高。游戏共进行 nn 轮操作,每轮可选以下两种操作之一:攻击 boss,造成 aia i 点伤害;闪避 boss 的攻击,本轮不造成伤害,但若下轮选择攻击,则此次攻击造成 bib i 点伤害。输入描述第一行输入一个整数 n(1≤n≤2×105)n(1≤n≤2×10 5 ) ,表示游戏轮数;第二行输入 nn 个整数 a1,
2025-08-25 11:16:52
29
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人