专栏文章

腾飞计划寒假第八课——图论 2025/2/9

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miq9dhzl
此快照首次捕获于
2025/12/04 01:05
3 个月前
此快照最后确认于
2025/12/04 01:05
3 个月前
查看原文
今天洛谷讨论区没了
但是 zhhhh 还可以发
吓我一跳
那还行

P9650 [SNCPC2019] Escape Plan

多源最短路,从所有终点开始跑,给每条边建反边,dijk 初始时把所有终点都放到堆里开始 bfs。
一个点从堆中取出来一次,就把当前走的最短的路封掉,怪物数量减 11,continue 掉,不再去更新后面的点。直到没有怪物了就走。

P6005 [USACO20JAN] Time is Mooney G

枚举一下用了几天,如果 c=1c=1 的情况,堆旅行一天就多花 2T+12T+1,而多一天的收益最多 10001000,所以天数最多 500500
dx,id_{x,i} 表示用 ii 天到了 xx 点的最大收益。
分层图最短(长)路。
每条边的边权等于到的点的点权。
每天是一层,每个点连向下一层的去的点,最后求 max(di,1)\max(d_{i,1})
发现这个分层图每层内部没有环,所以可以直接 DP。

P9813 [CCC 2015 S4] Convex Hull

对每个点记 dx,id_{x,i},表示表示跑到第 ii 个点,途经 hh 值之和为 jj 的最短路径。
分成 kk 层跑最短路即可。

P9549「PHOI-1」路虽远

相当于 mkm-k 次不限速机会。
dx,i,jd_{x,i,j} 表示用 ii 次不限速,闯了 jj 次黄灯到了 xx 的时间。
到一个点讨论灯的状态,如果是黄灯可以等或不等。
根据闯黄灯的次数和用的不限速次数分层。
不用分很多层,不用复制边,只需要更新 dpdp 数组的下一维就行了。

P9751 [CSP-J 2023] 旅游巴士

kk 作为分层图第二维。
fi,xf_{i,x} 表示走到 iitmodk=xt\mod k=x 用的时间。
相当于 kk 层图。
如果到达这个点的时候边已经打开了,就可以用 f[i][x]+1f[j][(x+1)modk]f[i][x]+1\rarr f[j][(x+1)\mod k]
否则算一下等到开放需要多久 wpk×k+p+1\displaystyle\lceil\frac{w−p}{k}\rceil\times k+p+1
fn,0f_{n,0} 是答案。

[ABC277E] Crystal Switches

两层图,一层全 00,一层全 11,将有开关的点对两层都连边,没开关的点就只连一层。再跑最短路。

P2966 [USACO09DEC] Cow Toll Paths G

可以用 florrid 来做
先把点权离散化一下。
fk,i,jf_{k,i,j} 表示用前 kk 小的(小于等于 kk 的)点中转,iijj 的最短路。
sstt 路径上的最大值 mm,答案就是 fm,s,t+mf_{m,s,t}+m

P5837 [USACO19DEC] Milk Pumping G

枚举从 11nn 的最小流量。
维护一个图,每次加边,没加一次边重跑一次最短路。
最多加 mm 次边,总复杂度 O(m2logn)O(m^2\log n)

P9724 [EC Final 2022] Chase Game

如果两人到达同一个点,那么一定是按照最短路直接走到终点。
也就是只有一开始 bb 没有动的一段需要考虑,后面答案是一定的。
所以所有有效状态是 O(n)O(n) 的,预处理 bbnn 号点所有点的最短路之后,使用 dijk 计算即可。

P5590 赛车游戏

dud_u 表示从 11uu 的最短路径,对于所有边都有 wu,v=dvduw_{u,v}=d_v-d_u
与其设置边权使路径长度相等,不如设置路径长度去拟合边权的限制。
1dvdu91\le d_v-d_u\le9 转化为 dvdu+9,dudv1d_v\le d_u+9,d_u\le d_v-1
差分约束求解。

P3436 [POI 2006] PRO-Professor Szu

tarjan 缩点之后跑一个拓扑,拓扑过程中 dp。

评论

0 条评论,欢迎与作者交流。

正在加载评论...