在一个充满魔法与奇迹的世界里,一位伟大的大魔法师正准备进行一场前所未有的宏大炼金实验。 为了确保实验的成功,他需要招募三名来自不同专精领域的助手:一名“巨龙血脉”(专精火与力量)、一名“精灵之森”(专精自然与敏捷)以及一名“深海智者”(专精水与智慧)。 候选者名单已经拟定。你需要帮助大魔法师从所有候选中,选出三人组成一个完美的团队。团队必须满足以下条件: 1. 团队中必须恰好包含一名“巨龙血脉”、一名“精灵之森”和一名“深海智者”。 2. 为了避免不同派系的魔力产生冲突,所选中的三名助手的魔力印记(即他们所掌握的独特法术符文)不能有任何重合 。 你的任务是找出所有可能的、符合上述条件的团队组合。
第一行是一个整数 N ,代表候选者的总数。 0 < N ≤ 100 接下来的 N 行,每行代表一位候选者的信息,格式如下: ID T R_1 R_2 R_3 R_4 ID :候选者的唯一编号,是一个整数。( 0 < ID ≤ 100 ) T :候选者的专精领域(类型), 1 代表“巨龙血脉”, 2 代表“精灵之森”, 3 代表“深海智者”。 R_1, R_2, R_3, R_4 :该候选者所拥有的四个魔力印记的编号。印记编号是一个整数,范围为 [0, 100] 。如果编号为 0 ,则代表该位置没有印记。
输出所有可能的团队组合。 每一行代表一个组合,格式为: `巨龙血脉ID 精灵之森ID 深海智者ID` 输出结果需要按照“巨龙血脉”的 ID 升序排序;如果 ID 相同,则按“精灵之森”的 ID 升序排序;如果前两者 ID 也相同,则按“深海智者”的 ID 升序排序。 如果不存在任何满足条件的组合,请输出 `-1`。
6 2 2 5 6 7 8 3 3 9 10 11 12 4 2 1 2 3 0 5 1 5 0 7 8 1 1 1 2 3 4 6 1 1 2 3 4
1 2 3 5 4 3 6 2 3
4 1 1 1 2 3 4 2 2 5 6 7 8 3 3 9 10 11 12 4 2 13 14 15 16
1 2 3 1 4 3
1 1 1 1 2 3 4
-1
考点:排序
数据规模 N ≤ 100 | 限制 3 秒 / 256MB | 标准输入输出
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1
6 / 2 2 5 6 7 8 / 3 3 9 10 11 12 / 4 2 1 2 3 0 / 5 1 5 0 7 8 / 1 1 1 2 3 4 / 6 1 1 2 3 41 2 3 / 5 4 3 / 6 2 3样例 2
4 / 1 1 1 2 3 4 / 2 2 5 6 7 8 / 3 3 9 10 11 12 / 4 2 13 14 15 161 2 3 / 1 4 3解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-11月19号开发岗。