1 条题解
-
0
题意转化
设选的三只海狸为 ,队伍总能力为:
[ S = \max(X_A,X_B,X_C) + \max(Y_A,Y_B,Y_C) + \max(Z_A,Z_B,Z_C) ]
条件:每个成员有一项能力严格大于其他两人。
这意味着:
- 不能有人两项能力都最大。
- 三个人的“优势能力”必须分布在三个不同维度上。
核心思路
关键观察:
如果我们固定优势能力的分配方式,比如:- :思考值最大
- :行动值最大
- :运气值最大
那么条件变成:
并且总能力值: [ S = X_A + Y_B + Z_C ] 因为 在 上最大, 在 上最大, 在 上最大。
算法设计
我们可以枚举所有 种优势分配方案,对每种方案求最大 ,最后取最大值。
以方案 为例:
- 按 降序排序。
- 枚举 (思考值最大的那个人),那么 和 必须来自 之后的位置(保证 )。
- 我们需要在 之后的海狸中,选择 和 满足:
- 并且最大化 。
数据结构优化
为了高效求解,我们可以:
- 从后往前扫描,用线段树维护后缀中 的信息。
- 线段树以 为键(离散化后),存储对应的最大 值。
- 对于每个 ,我们在 的范围内查询最大 值,同时要保证选出的 和 不是同一只海狸,且 足够大。
具体实现时,可以维护最大 Z 和次大 Z,并记录它们对应的 值,以避免 和 是同一人。
算法步骤
- 枚举 6 种优势分配排列。
- 对每种排列 :
- 按 能力降序排序。
- 初始化线段树。
- 从后往前扫描,将海狸加入线段树。
- 对于每个位置 作为 ,在 能力 的 能力的区间中,查询最大 能力,并检查 能力 的 能力。
- 更新答案 。
- 如果 仍为初始值(比如 或 ),输出 ,否则输出 。
复杂度分析
- 枚举 6 种排列。
- 每次排序 。
- 线段树操作 。
- 总复杂度 ,可过 。
总结
本题的难点在于:
- 将“每人有一项严格最大”转化为固定优势分配的枚举。
- 利用排序和线段树高效求解每种分配下的最大总能力。
- 注意 和 不能是同一人,需维护次大值或类似技巧。
最终复杂度 ,可解决 。
- 1
信息
- ID
- 4076
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8.5
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者