1 条题解
-
0
题目大意
给定一个 个点 条边的无向图,每条边有 个权值 。从点 出发,在 天内到达点 (每天走一条边)。经过一条边时,可以选择将其某些类型的权值"收集"到最终答案中。要求求出 个类型的最大字典序序列。
核心思路
1. 问题转化
- 对于每种剑类型 ,我们要在保证前 种剑价值最大的前提下,最大化第 种剑的价值
- 这相当于按优先级分层求解:先确定类型 的最大值,再固定这个值去求类型 的最大值,依此类推
2. 关键观察
对于第 种剑,我们关心的是:
- 是否存在一条从 到 的路径,长度
- 路径上包含至少一条边,其 等于我们考虑的候选值
- 并且这条路径不会降低前 种剑已经确定的最大值
3. 状态压缩与 BFS
- 用状态压缩记录前 种剑的收集情况
- 定义 :从点 到点 ,收集了状态 (表示前 种剑的哪些已经按最大值收集)的最短天数
- 定义 :从点 到点 ,收集了状态 的最短天数
4. 判定公式
对于候选值 和边 ,检查是否存在状态分割:
其中:
- 和 是互补的状态分割
- 要保证边 上能收集到当前候选值
- 并且不破坏前 种剑的已确定最大值
5. 算法流程
对每个剑类型 依次处理:
- 用 BFS 预处理 和
- 二分或扫描确定当前类型的最大值
- 标记所有能达到该最大值的边
- 输出结果,继续处理下一类型
复杂度分析
- 状态数:
- 对每个类型进行两次 BFS:
- 总复杂度:,在 时可接受
这种方法通过分层处理和状态压缩,巧妙地解决了字典序优化问题。
- 1
信息
- ID
- 4138
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者