1 条题解
-
0
问题分析 题目要求计算有向图 的函数 ,其中 定义为所有顶点 的函数值 之和。函数 的计算过程涉及按顺序检查顶点 是否与 双向可达,并在满足条件时删除顶点 。
关键观察 通过分析函数 的计算过程,可以发现:
点对 (其中 )会对 产生贡献,当且仅当在图中存在从 到 和从 到 的路径,且路径上所有顶点的编号都不小于 。
将问题转化为对点对的贡献计数,可以简化计算。
核心思路 定义关键变量:设 表示使得 和 双向连通的最大边权(即边编号)的最小值。这里边权定义为边的输入顺序编号。
动态规划计算:使用类 Floyd 算法,从大到小枚举中间顶点 ,更新所有点对 的 值。通过这种方式,可以高效地计算出所有点对的双向连通性。
贡献统计:对于每个点对 ,若 存在,则它对所有删除边数小于 的图 产生贡献。通过后缀和技巧,可以快速计算出所有 的值。
算法流程 初始化 数组,存储点对间的最大边权。
从 到 逆序枚举中间顶点 ,更新所有点对的 值。
对于每个点对 (),根据 和 的最小值确定其贡献的边范围。
使用后缀和数组 统计贡献,最终输出所有 的值。
复杂度分析 时间复杂度:,主要来源于三重循环的 Floyd 算法。
空间复杂度:,用于存储点对间的边权信息。
- 1
信息
- ID
- 3589
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者