CF147B 题解

Solution

一道十分典型的 dp 题。有三个关键点分别是定义状态、优化和答案的统计。

  • 首先定义状态,定义 fi,j,p 表示 ij 号节点,共走了不超过 p 条边,且是 ij最长路径。不超过 p 条边是为了方便转移,而最长路径如果都为负环,说明需要走更多的边,实际上也是为了方便转移。但是这样是 O(n4) 转移的,所以用一个很常见的 trick 就是倍增。将状态定义变成这样:fi,j,p 表示 ij 号节点,共走了不超过2p 条边,且是 ij 的最长路径。然后状态转移便是 O(n3logn) 的,状态转移方程为 fi,j,p=fi,k,p1+fk,j,p1,可以类比 Floyd 算法的转移。

  • 然后就是统计答案,注意在这时,你需要枚举 p,如果 2p 步可以达到最小正环,便继续考虑 2p1 是否可行。如果不行,就累加答案,仍然继续考虑 2p1

注意数组赋成 以及细节的处理。

posted @   Celestial_cyan  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示