P1113 杂物
考点
拓扑排序、图论、递推 / 记忆化搜索。
思路分析
题目给定 n 个任务,每个任务有完成耗时和前置任务。完成所有任务的最短时间,就是从起点到终点的最长路径(因为耗时最长的链决定了整体完成时间)。
本题用 DAG 建图 + 记忆化 DFS 解决:
- 对每个任务,记录它的前序任务(即谁指向它)
- 用 DFS 从每个节点出发,递归计算到达该节点的最长路径
- 记忆化搜索避免重复计算
代码实现
1 | static int dfs(int x) { |
小结
- “完成所有任务的最短时间” 在 DAG 中 = 最长路径
- 记忆化搜索是 DAG 上 DP 的常用实现方式
- 建图时注意边的方向:前序指向后续
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Alignm-ent!
