随笔分类 -  图论 -- 最短路

摘要:"题面" 题解 有一个很简单的 DP 式 $$ f[i] = min(k[i], s[i] + \sum f[j]) $$ 其中 $j$ 是普攻 $i$ 后产生的小怪编号 但是这样转移可能有环 我们考虑使用最短路转移, 对于一对 $(i, j)$ 连边 $i \to j$ 然后初始化每个点都为法术攻 阅读全文
posted @ 2020-02-11 20:17 ztlztl 阅读(123) 评论(0) 推荐(0)
摘要:"题面" 题解 发现数据范围很小, 考虑从这上面入手 不难发现, 如果我们把所有边的长度排序, 将每条边选与不选看作一个 01 串 假设最优路径长度为 L , 必然存在一个 $K$ , 满足前 $1 \to K$ 都是 1 , 其他的随便 考虑枚举这个 $K$ 设 $f[i][j][k]$ 满足到 阅读全文
posted @ 2020-02-04 10:00 ztlztl 阅读(155) 评论(0) 推荐(0)
摘要:"题面" 题解 将所有点根据𝑥排序后, 相邻的连一条双向边 正确性: 若对于两个点的𝑑𝑖𝑠是由𝑥来更新, 则𝑑𝑖𝑠会等于中间所有点之间相邻的边的和 如果是由𝑦更新呢? 再根据𝑦排序后, 相邻的连边即可 代码 阅读全文
posted @ 2019-11-06 17:18 ztlztl 阅读(124) 评论(0) 推荐(0)
摘要:题面 怎么是权限题啊 题解 有一次考过, 但是不记得了 如果每个点都是加油站的话, 这道题就是货车运输 考虑如何转化 我们可以设𝑑𝑖𝑠[𝑖]为𝑖到离他最近的加油站的距离, 𝑖𝑑[𝑖]记录的是离𝑖最近的加油站是哪一个 最短路转移即可 然后对于原图中每一条边(𝑢,𝑣,𝑤), 若� 阅读全文
posted @ 2019-11-06 17:16 ztlztl 阅读(114) 评论(0) 推荐(0)
摘要:"题解" 题解 考虑到正着跑不好想, 我们尝试反向跑 以每个终点作为起点, 维护每个点的最小值和次小值(最小的被老虎ban掉了) 转移的时候用当前点的次小值去更新其所连的点的最小值和次小值 由于最小的次小值不能被其他次小值所更新, 所以我们可以使用dijkstra 把每个终点丢进去跑dijkstra 阅读全文
posted @ 2019-07-14 16:37 ztlztl 阅读(266) 评论(0) 推荐(0)
摘要:"题面" 题解 对于到某个点$i$, 我们有两个条件 到达$i$点的最短时间, 用$dis1_i$表示 破坏完所有保护$i$点的城市的最小时间 两者取$max$即到$i$点的最小时间 对于破坏某个城市的保护点, 用类似于拓扑序的方式处理即可 Code cpp include include incl 阅读全文
posted @ 2019-07-14 16:07 ztlztl 阅读(156) 评论(0) 推荐(0)