随笔分类 -  最短路

摘要:可以发现可以构建出的是一棵树,且树的深度在20层及以内 刚开始想对于每条路径跑最短路,然后都跑一边得出答案,但是发现因为路径可以重叠,所以后面求的路径会修改一些公共路径的最短路,所以不能这么求 考虑什么是不变的,一个点到自己的最短路一定是0,所以从每个点出发,跑它到所有子节点的最短路,这个路一定是这 阅读全文
posted @ 2021-05-10 17:00 cminus 阅读(645) 评论(0) 推荐(0)
摘要:我到底是多菜才能这道题都做不出来啊 似乎是t神几分钟就写出来的题目 这道题的重点在于求长度为k的最短路,我的误区在于我一直想用各种最短路算法来解决,但是完全不需要 显然这种限制具体步数的问题可以用DP或者说是分层图来解决,当然从本质上来说分层图就是一种DP,考虑dp[k][i][j]表示从(i, j 阅读全文
posted @ 2021-05-07 21:20 cminus 阅读(43) 评论(0) 推荐(0)
摘要:最优贸易 分层图SPFA,三层图,第二层是购买,第三层是卖出,但是虽然没有卡SPFA,最坏情况下复杂度是会到$O(n^2)$的 Tarjan强连通分量缩点+DP(ps:很麻烦) 最优解,把所有的点从小到大排序,从最小的点开始尽可能BFS更新所有点,所以复杂度是$O(m + n)$ 飞行路线 分层图裸 阅读全文
posted @ 2021-01-25 01:29 cminus 阅读(70) 评论(0) 推荐(0)
摘要:这道题的思路非常巧妙,如果两点之间的距离是$2^k$,那么就建一条长度为1的边,然后再跑一遍最短路就好了。 推的方法就是$f(i, j, len) = 1$ 如果 $f(i, k, len - 1) = 1$ 并且$f(k, j, len - 1) = 1$,其中$f(i, j, len)$指的是$ 阅读全文
posted @ 2020-03-14 16:53 cminus 阅读(134) 评论(0) 推荐(0)