通过率 53% · 提交 60 · 通过 32
在遥远的魔法大陆,每位魔导师都拥有一颗具有固定魔力值的魔法水晶。每逢月圆之夜,魔法议会会发放一批魔法卷轴。每张卷轴都需要足够的魔力值才能成功激活。 为了公平分配魔力资源,每颗水晶在一轮仪式中只能使用一次。 激活仪式中,每张卷轴将依次寻找一颗尚未被使用且满足条件的水晶来启动: * 只能选择一颗的水晶(即 `水晶 >= 卷轴`); * 若有多颗水晶满足条件,; * 若魔力值相同,选择的水晶(编号从 `0` 开始); * 若没有任何水晶满足条件,则此次激活失败,返回 `-1`; * 每颗水晶只能匹配成功一次,成功匹配后将无法再次用于其他卷轴。 输入:第一行输入一个整数 `n`,表示魔法水晶的数量。 第二行输入 `n` 个整数,表示每颗水晶的魔力值(单位:魔力点),中间用空格隔开。 第三行输入一个整数 `m`,表示待激活的魔法卷轴数量。 第四行输入 `m` 个整数,表示每张卷轴所需的魔力值(单位:魔力点),中间用空格隔开。 * `1 <= n, m <= 200000` * `1 <= 魔力值 <= 10^9` 输出:输出一行 `m` 个整数,依次表示每张卷轴所匹配的水晶编号,若无法匹配则输出 `-1`。编号之间用空格分隔。
这类题属于华为可信认证科目一方向中「可信 / 二分查找」方向的高频题型,通常考察对「可信 / 二分查找」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入一个整数 n,表示魔法水晶的数量。
第二行输入 n 个整数,表示每颗水晶的魔力值(单位:魔力点),中间用空格隔开。
第三行输入一个整数 m,表示待激活的魔法卷轴数量。
第四行输入 m 个整数,表示每张卷轴所需的魔力值(单位:魔力点),中间用空格隔开。
1 <= n, m <= 2000001 <= 魔力值 <= 10^9输出一行 m 个整数,依次表示每张卷轴所匹配的水晶编号,若无法匹配则输出 -1。编号之间用空格分隔。
示例 1
输入示例
4 128 256 64 196 4 128 64 64 512
输出示例
0 2 3 -1
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有