2024华为OD机试C卷D卷 JAVA/C++/Python
华为OD2024最新题集C卷+D卷
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
算法之旅
订阅华为od笔试机试专栏,共同进步!
展开
-
华为OD机试(C卷+D卷)2024真题目录 Python、C++、Java
华为OD2024,C卷D卷,JAVA,C++,Python,华为OD最新题集,华为OD2024机试最新题集。华为笔试,华为机试,华为OD笔试,华为OD机试原创 2024-07-20 21:06:34 · 1142 阅读 · 0 评论 -
华为OD机试 - 转盘寿司 (Java 2024年C卷D卷)
如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足条件的 j,则不赠送寿司。输出享受优惠后的一组数据,每个值表示客户选择第 i 盘寿司时实际得到的寿司的总价格。寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格,每盘寿司的价格 price 范围为:1 ≤ price ≤ 1000。求解数组中每个元素的下一个更小值元素,且数组是循环的。寿司的盘数 n 范围为:1 ≤ n ≤ 500。原创 2024-07-23 10:47:01 · 433 阅读 · 0 评论 -
华为OD机试 - 开源项目热榜/开源项目热度榜单 (python 2024年C卷D卷)
第一行输入为N,表示开源项目的个数,0 < N <100。原创 2024-07-23 14:49:24 · 768 阅读 · 0 评论 -
华为OD机试 - 机器人仓库搬砖 (c++ 2024年C卷D卷)
机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化尽量减小每次补充的能量格数 为了保障在8小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。机器人一个小时只能在一个仓库干活,那么在8小时内,机器人最多干完8个仓库。机器人每小时最少需要充的能量格,若无法完成任务,输出 -1。原创 2024-07-23 21:44:07 · 223 阅读 · 0 评论 -
华为OD机试 - 虚拟理财游戏 (c++ 2024年C卷D卷)
最多只能投资2个理财产品,也就是m个理财产品中选1个或2个,所选产品风险值之和 ≤ x,投资额之和 ≤ n,并且最终所选产品的投资回报之和最大。现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。第四行:最大投资额度序列,输入为整数,取值范围[1, 10000]第二行:产品投资回报率序列,输入为整数,取值范围[1,60]第三行:产品风险值序列,输入为整数,取值范围[1, 100]可接受的总风险(整数,取值范围[1,200])原创 2024-07-24 11:12:55 · 414 阅读 · 0 评论 -
华为OD机试 - 开源项目热榜/开源项目热度榜单 (Java 2024年C卷D卷)
第一行输入为N,表示开源项目的个数,0 < N <100。原创 2024-07-23 14:50:38 · 831 阅读 · 0 评论 -
华为OD机试 - 分配土地 (python 2024年C卷D卷)
说明:土地上的旗子为1,其坐标分别为(0,0),(2,1)以及(0,2),为了覆盖所有旗子,矩阵需要覆盖的横坐标为0和2,纵坐标为0和2,所以面积为9,即(2-0+1)*(2-0+1)= 9。某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民,请问此次分配土地,做出贡献的村民种最大会分配多大面积?(最大的横坐标 - 最小的横坐标 + 1) * (最大的纵坐标 - 最小的纵坐标 + 1)说明:由于不存在成对的小旗子,故而返回1,即一块土地的面积。m 代表村子的土地的长。原创 2024-07-22 19:27:46 · 307 阅读 · 0 评论 -
华为OD机试 - 学生排名/智能成绩表 (c++ 2024年C卷D卷)
最后一行输入了shuxue,那么我就去第二行输入:yuwen shuxue,中去找对应出现序号为 1,那么有效要素的索引就是1,最终用于制定排序规则的值就是 rank[1]。排序科目不存在,按总分排序 , fangfang 和 minmin 总分相同,按姓名的字典序顺序, fangfang 排在前面。如果最后一行输入的科目,在第二行中不存在,那么就是按照总分制定排序规则,此时排序要素取 rank[m]。按照最后一行输入的科目的分数进行排序,如果对应科目不存在,则按照总分进行排序。原创 2024-07-22 20:05:07 · 722 阅读 · 0 评论 -
华为OD机试 - 转盘寿司 (c++ 2024年C卷D卷)
如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足条件的 j,则不赠送寿司。输出享受优惠后的一组数据,每个值表示客户选择第 i 盘寿司时实际得到的寿司的总价格。寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格,每盘寿司的价格 price 范围为:1 ≤ price ≤ 1000。求解数组中每个元素的下一个更小值元素,且数组是循环的。寿司的盘数 n 范围为:1 ≤ n ≤ 500。原创 2024-07-23 10:47:58 · 263 阅读 · 0 评论 -
华为OD机试 - 机器人仓库搬砖 (Java 2024年C卷D卷)
机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化尽量减小每次补充的能量格数 为了保障在8小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。机器人一个小时只能在一个仓库干活,那么在8小时内,机器人最多干完8个仓库。机器人每小时最少需要充的能量格,若无法完成任务,输出 -1。原创 2024-07-23 21:42:49 · 591 阅读 · 0 评论 -
华为OD机试 - 学生排名/智能成绩表 (python 2024年C卷D卷)
最后一行输入了shuxue,那么我就去第二行输入:yuwen shuxue,中去找对应出现序号为 1,那么有效要素的索引就是1,最终用于制定排序规则的值就是 rank[1]。排序科目不存在,按总分排序 , fangfang 和 minmin 总分相同,按姓名的字典序顺序, fangfang 排在前面。如果最后一行输入的科目,在第二行中不存在,那么就是按照总分制定排序规则,此时排序要素取 rank[m]。按照最后一行输入的科目的分数进行排序,如果对应科目不存在,则按照总分进行排序。原创 2024-07-22 20:01:52 · 432 阅读 · 0 评论 -
华为OD机试 - 虚拟理财游戏 (Java 2024年C卷D卷)
最多只能投资2个理财产品,也就是m个理财产品中选1个或2个,所选产品风险值之和 ≤ x,投资额之和 ≤ n,并且最终所选产品的投资回报之和最大。现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。第四行:最大投资额度序列,输入为整数,取值范围[1, 10000]第二行:产品投资回报率序列,输入为整数,取值范围[1,60]第三行:产品风险值序列,输入为整数,取值范围[1, 100]可接受的总风险(整数,取值范围[1,200])原创 2024-07-24 11:13:24 · 294 阅读 · 0 评论 -
华为OD机试 - 分配土地 (c++ 2024年C卷D卷)
说明:土地上的旗子为1,其坐标分别为(0,0),(2,1)以及(0,2),为了覆盖所有旗子,矩阵需要覆盖的横坐标为0和2,纵坐标为0和2,所以面积为9,即(2-0+1)*(2-0+1)= 9。某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民,请问此次分配土地,做出贡献的村民种最大会分配多大面积?(最大的横坐标 - 最小的横坐标 + 1) * (最大的纵坐标 - 最小的纵坐标 + 1)说明:由于不存在成对的小旗子,故而返回1,即一块土地的面积。m 代表村子的土地的长。原创 2024-07-22 19:28:19 · 258 阅读 · 0 评论 -
华为OD机试 - 转盘寿司 (python 2024年C卷D卷)
如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足条件的 j,则不赠送寿司。输出享受优惠后的一组数据,每个值表示客户选择第 i 盘寿司时实际得到的寿司的总价格。寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格,每盘寿司的价格 price 范围为:1 ≤ price ≤ 1000。求解数组中每个元素的下一个更小值元素,且数组是循环的。寿司的盘数 n 范围为:1 ≤ n ≤ 500。原创 2024-07-23 10:45:58 · 293 阅读 · 0 评论 -
华为OD机试 - 虚拟理财游戏 (python 2024年C卷D卷)
最多只能投资2个理财产品,也就是m个理财产品中选1个或2个,所选产品风险值之和 ≤ x,投资额之和 ≤ n,并且最终所选产品的投资回报之和最大。现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。第四行:最大投资额度序列,输入为整数,取值范围[1, 10000]第二行:产品投资回报率序列,输入为整数,取值范围[1,60]第三行:产品风险值序列,输入为整数,取值范围[1, 100]可接受的总风险(整数,取值范围[1,200])原创 2024-07-24 11:12:15 · 222 阅读 · 0 评论 -
华为OD机试 - 分配土地 (Java 2024年C卷D卷)
说明:土地上的旗子为1,其坐标分别为(0,0),(2,1)以及(0,2),为了覆盖所有旗子,矩阵需要覆盖的横坐标为0和2,纵坐标为0和2,所以面积为9,即(2-0+1)*(2-0+1)= 9。某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民,请问此次分配土地,做出贡献的村民种最大会分配多大面积?(最大的横坐标 - 最小的横坐标 + 1) * (最大的纵坐标 - 最小的纵坐标 + 1)说明:由于不存在成对的小旗子,故而返回1,即一块土地的面积。m 代表村子的土地的长。原创 2024-07-22 17:53:34 · 366 阅读 · 0 评论 -
华为OD机试 - 开源项目热榜/开源项目热度榜单 (c++ 2024年C卷D卷)
第一行输入为N,表示开源项目的个数,0 < N <100。原创 2024-07-23 14:51:54 · 847 阅读 · 0 评论 -
华为OD机试 - 机器人仓库搬砖 (python 2024年C卷D卷)
机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化尽量减小每次补充的能量格数 为了保障在8小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。机器人一个小时只能在一个仓库干活,那么在8小时内,机器人最多干完8个仓库。机器人每小时最少需要充的能量格,若无法完成任务,输出 -1。原创 2024-07-23 21:43:18 · 308 阅读 · 0 评论 -
华为OD机试 - 游戏分组/王者荣耀 (python 2024年C卷D卷)
现在,给你10位玩家的战斗力,请你把他们分为实力尽量相等的两组。请你输出这两组的实力差。也顺便讲下其他常规解法可以自行尝试:通过深度优先搜索(DFS)尝试所有可能的分队方式,以找到实力差的绝对值最小的分队方案。整个算法的目标是遍历所有可能的组合,并计算出两队实力差的最小绝对值。例: 10名参赛者的评分分别为5 1 8 3 4 6 710 9 2,分组为 (135 8 10) (24 679),两组实力差最小,差值为1。现在给你10名参与者的游戏水平评分,请你根据上述要求分队最后输出这两组的实力差绝对值。原创 2024-07-24 12:34:32 · 170 阅读 · 0 评论 -
华为OD机试 - 学生排名/智能成绩表 (Java 2024年C卷D卷)
最后一行输入了shuxue,那么我就去第二行输入:yuwen shuxue,中去找对应出现序号为 1,那么有效要素的索引就是1,最终用于制定排序规则的值就是 rank[1]。排序科目不存在,按总分排序 , fangfang 和 minmin 总分相同,按姓名的字典序顺序, fangfang 排在前面。如果最后一行输入的科目,在第二行中不存在,那么就是按照总分制定排序规则,此时排序要素取 rank[m]。按照最后一行输入的科目的分数进行排序,如果对应科目不存在,则按照总分进行排序。原创 2024-07-22 20:03:56 · 951 阅读 · 0 评论 -
华为OD机试 - 密码输入检测 (python 2024年C卷D卷)
给定用户密码输入流input,输入流中字符’原创 2024-07-22 11:02:04 · 245 阅读 · 0 评论 -
华为OD机试 - 万能字符单词拼写/掌握的单词个数 (python 2024年C卷D卷)
如果单词中的字母数量大于字符集中的字母数量,我们可以使用问号来替代。如果所有的字母都可以匹配,那么我们就可以拼写这个单词。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。接下来,我们遍历所有的单词,对于每个单词,我们也需要计算单词中每个字母的出现次数。输出词汇表 words 中你掌握的所有单词的个数。我们需要创建一个数组来计算字符集中每个字母的出现次数,同时计算问号的数量。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。原创 2024-07-24 21:00:34 · 347 阅读 · 0 评论 -
华为OD机试 - 数的分解 (Java/c++/python 2024年C卷D卷)
给定一个正整数 n,如果能够分解为 m(m > 1)个连续正整数之和,请输出所有分解中,m最小的分解。如果给定整数无法分解为连续正整数,则输出字符串"N"。输入数据为一整数,范围为 (1, 2^30]其中 21=10+11,是最短的分解序列。原创 2024-07-26 17:30:00 · 457 阅读 · 0 评论 -
华为OD机试 - 小华地图寻宝/小华最多能得到多少克黄金 (c++ 2024年C卷D卷)
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标数位之和大于 k 的方格存在危险不可进入。小华从入口 (0,0) 进入,任何时候只能向左,右,上,下四个方向移动一格。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。简单搜索,可以深度优先搜索(DFS)也可以广度优先搜索(BFS)输入中包含3个字数,分别是m, n, k。每进入一个位置,则获得黄金1克。输出小华最多能获得多少克黄金。原创 2024-07-26 11:39:34 · 316 阅读 · 0 评论 -
华为OD机试 - 小华地图寻宝/小华最多能得到多少克黄金 (Java 2024年C卷D卷)
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标数位之和大于 k 的方格存在危险不可进入。小华从入口 (0,0) 进入,任何时候只能向左,右,上,下四个方向移动一格。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。简单搜索,可以深度优先搜索(DFS)也可以广度优先搜索(BFS)输入中包含3个字数,分别是m, n, k。每进入一个位置,则获得黄金1克。输出小华最多能获得多少克黄金。原创 2024-07-26 11:39:06 · 315 阅读 · 0 评论 -
华为OD机试 - 围棋的气 (python 2024年C卷D卷)
因此,我们只需要遍历19*19的棋盘中每一个位置,检查对应位置是否有棋子,若没有棋子,则检查其上下左右四个位置是否存在黑棋、白棋,若存在则对应颜色的棋子的气数+1,需要注意的是,一个位置只能产生一个气,因此如果该位置的上下左右位置有多个黑棋,也只能为黑棋加一个气,白棋同理。围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。每行数据以空格分隔,数据个数是2的整数倍,每两个数是一组,代表棋子在棋盘上的坐标;原创 2024-07-24 16:52:16 · 639 阅读 · 0 评论 -
华为OD机试 - 万能字符单词拼写/掌握的单词个数 (c++ 2024年C卷D卷)
如果单词中的字母数量大于字符集中的字母数量,我们可以使用问号来替代。如果所有的字母都可以匹配,那么我们就可以拼写这个单词。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。接下来,我们遍历所有的单词,对于每个单词,我们也需要计算单词中每个字母的出现次数。输出词汇表 words 中你掌握的所有单词的个数。我们需要创建一个数组来计算字符集中每个字母的出现次数,同时计算问号的数量。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。原创 2024-07-24 20:59:41 · 299 阅读 · 0 评论 -
华为OD机试 - 分割均衡字符串 (Java 2024年C卷D卷)
根据题意,对于一个平衡字符串 s,若 s 能从中间某处分割成左右两个子串,若其中一个是平衡字符串,则另一个的 X 和 Y 字符的数量必然是相同的,所以也一定是平衡字符串。为了最大化分割数量,我们可以不断循环,每次从 s 中分割出一个最短的平衡前缀,由于剩余部分也是平衡字符串,我们可以将其当作 s 继续分割,直至 s 为空时,结束循环。代码实现中,可以在遍历字符串 s 时用变量 维护 X 和 Y 字符的数量,当 计数相等 时就说明找到了一个平衡字符串,将答案加一。备注: 分割后的子串,是原字符串的连续子串。原创 2024-07-25 17:16:42 · 359 阅读 · 0 评论 -
华为OD机试 - 围棋的气 (c++ 2024年C卷D卷)
因此,我们只需要遍历19*19的棋盘中每一个位置,检查对应位置是否有棋子,若没有棋子,则检查其上下左右四个位置是否存在黑棋、白棋,若存在则对应颜色的棋子的气数+1,需要注意的是,一个位置只能产生一个气,因此如果该位置的上下左右位置有多个黑棋,也只能为黑棋加一个气,白棋同理。围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。每行数据以空格分隔,数据个数是2的整数倍,每两个数是一组,代表棋子在棋盘上的坐标;原创 2024-07-24 16:53:49 · 516 阅读 · 0 评论 -
华为OD机试 - 分割均衡字符串 (c++ 2024年C卷D卷)
根据题意,对于一个平衡字符串 s,若 s 能从中间某处分割成左右两个子串,若其中一个是平衡字符串,则另一个的 X 和 Y 字符的数量必然是相同的,所以也一定是平衡字符串。为了最大化分割数量,我们可以不断循环,每次从 s 中分割出一个最短的平衡前缀,由于剩余部分也是平衡字符串,我们可以将其当作 s 继续分割,直至 s 为空时,结束循环。代码实现中,可以在遍历字符串 s 时用变量 维护 X 和 Y 字符的数量,当 计数相等 时就说明找到了一个平衡字符串,将答案加一。备注: 分割后的子串,是原字符串的连续子串。原创 2024-07-25 17:18:31 · 150 阅读 · 0 评论 -
华为OD机试 - 游戏分组/王者荣耀 (c++ 2024年C卷D卷)
现在,给你10位玩家的战斗力,请你把他们分为实力尽量相等的两组。请你输出这两组的实力差。也顺便讲下其他常规解法可以自行尝试:通过深度优先搜索(DFS)尝试所有可能的分队方式,以找到实力差的绝对值最小的分队方案。整个算法的目标是遍历所有可能的组合,并计算出两队实力差的最小绝对值。例: 10名参赛者的评分分别为5 1 8 3 4 6 710 9 2,分组为 (135 8 10) (24 679),两组实力差最小,差值为1。现在给你10名参与者的游戏水平评分,请你根据上述要求分队最后输出这两组的实力差绝对值。原创 2024-07-24 12:35:25 · 253 阅读 · 0 评论 -
华为OD机试 - 小华地图寻宝/小华最多能得到多少克黄金 (python 2024年C卷D卷)
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标数位之和大于 k 的方格存在危险不可进入。小华从入口 (0,0) 进入,任何时候只能向左,右,上,下四个方向移动一格。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。简单搜索,可以深度优先搜索(DFS)也可以广度优先搜索(BFS)输入中包含3个字数,分别是m, n, k。每进入一个位置,则获得黄金1克。输出小华最多能获得多少克黄金。原创 2024-07-26 11:38:37 · 424 阅读 · 0 评论 -
华为OD机试 - 执行任务赚积分 (Java 2024年C卷D卷)
我们只需要检查最后优先队列中记录的任务数量是否大于T,如果大于T,则将删除超出部分的任务,而被删除的任务都是积分小的。接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第3个时间单位内,无任务可处理。原创 2024-07-27 10:52:47 · 463 阅读 · 0 评论 -
华为OD机试 - 游戏分组/王者荣耀 (Java 2024年C卷D卷)
现在,给你10位玩家的战斗力,请你把他们分为实力尽量相等的两组。请你输出这两组的实力差。也顺便讲下其他常规解法可以自行尝试:通过深度优先搜索(DFS)尝试所有可能的分队方式,以找到实力差的绝对值最小的分队方案。整个算法的目标是遍历所有可能的组合,并计算出两队实力差的最小绝对值。例: 10名参赛者的评分分别为5 1 8 3 4 6 710 9 2,分组为 (135 8 10) (24 679),两组实力差最小,差值为1。现在给你10名参与者的游戏水平评分,请你根据上述要求分队最后输出这两组的实力差绝对值。原创 2024-07-24 12:34:57 · 368 阅读 · 0 评论 -
华为OD机试 - 小明找位置 (c++ 2024年C卷D卷)
数据较小,且仅要求不高于n*logn,那么O(n)的直接遍历也可以,这里讲一下二分查找的解法,时间复杂度为O(logn),以应对需要更优化的情况。小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模原创 2024-07-25 08:15:00 · 404 阅读 · 0 评论 -
华为OD机试 - 小明找位置 (Java 2024年C卷D卷)
数据较小,且仅要求不高于n*logn,那么O(n)的直接遍历也可以,这里讲一下二分查找的解法,时间复杂度为O(logn),以应对需要更优化的情况。小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模原创 2024-07-25 08:30:00 · 301 阅读 · 0 评论 -
华为OD机试 - 执行任务赚积分 (c++ 2024年C卷D卷)
我们只需要检查最后优先队列中记录的任务数量是否大于T,如果大于T,则将删除超出部分的任务,而被删除的任务都是积分小的。接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第3个时间单位内,无任务可处理。原创 2024-07-27 10:53:39 · 233 阅读 · 0 评论 -
华为OD机试 - 小明找位置 (python 2024年C卷D卷)
数据较小,且仅要求不高于n*logn,那么O(n)的直接遍历也可以,这里讲一下二分查找的解法,时间复杂度为O(logn),以应对需要更优化的情况。小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模原创 2024-07-25 08:45:00 · 241 阅读 · 0 评论 -
华为OD机试 - 分割均衡字符串 (python 2024年C卷D卷)
根据题意,对于一个平衡字符串 s,若 s 能从中间某处分割成左右两个子串,若其中一个是平衡字符串,则另一个的 X 和 Y 字符的数量必然是相同的,所以也一定是平衡字符串。为了最大化分割数量,我们可以不断循环,每次从 s 中分割出一个最短的平衡前缀,由于剩余部分也是平衡字符串,我们可以将其当作 s 继续分割,直至 s 为空时,结束循环。代码实现中,可以在遍历字符串 s 时用变量 维护 X 和 Y 字符的数量,当 计数相等 时就说明找到了一个平衡字符串,将答案加一。备注: 分割后的子串,是原字符串的连续子串。原创 2024-07-25 17:15:20 · 142 阅读 · 0 评论 -
华为OD机试 - 围棋的气 (Java 2024年C卷D卷)
因此,我们只需要遍历19*19的棋盘中每一个位置,检查对应位置是否有棋子,若没有棋子,则检查其上下左右四个位置是否存在黑棋、白棋,若存在则对应颜色的棋子的气数+1,需要注意的是,一个位置只能产生一个气,因此如果该位置的上下左右位置有多个黑棋,也只能为黑棋加一个气,白棋同理。围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。每行数据以空格分隔,数据个数是2的整数倍,每两个数是一组,代表棋子在棋盘上的坐标;原创 2024-07-24 16:54:15 · 636 阅读 · 0 评论