专栏文章

题解:P7984 [USACO21DEC] Tickets P

P7984题解参与者 3已保存评论 2

文章操作

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

当前评论
2 条
当前快照
1 份
快照标识符
@mir3kvvo
此快照首次捕获于
2025/12/04 15:11
3 个月前
此快照最后确认于
2025/12/04 15:11
3 个月前
查看原文

P7984 [USACO21DEC] Tickets P

思路

把每张票都看作一个节点,能买到票的检查站 cic_i 向票连权值为 pip_i 的边,票向能到达的检查站 [ai,bi][a_i,b_i] 连权值为 0 的边。
现在统计答案,需要求对于每个节点 ii 的最短路 dis1,idis_{1,i}disi,ndis_{i,n},我们可以建反边分别跑以 1 和 nn 为起点的最短路。
然后考虑如何合并答案。由于路径上重复经过的边只会累加一次代价,所以此时 dis1,i+disi,ndis_{1,i}+dis_{i,n} 并不是最终答案,因为可能存在重复计算了代价的边。
gig_i 表示点 ii 的最终答案,则 gidis1,i+disi,ng_i\le dis_{1,i}+dis_{i,n}
SiS_i 为点 ii 答案中重复统计了的点的点集。
Si=S_i=\varnothing 时,gi=dis1,i+disi,ng_i=dis_{1,i}+dis_{i,n}
SiS_i\ne\varnothing 时,总存在 uSiu\in S_i 使得 Su=S_u=\varnothing,此时 gu=dis1,u+disu,ng_u=dis_{1,u}+dis_{u,n}。对于边 uvu\to v,当确定了 gug_u 后,gv=min(gv,gu+wuv)g_v=\min(g_v,g_u+w_{u\to v})
我们发现这个转移和最短路的转移一模一样。
所以我们初始时假设每个点都没有重复计算的代价,令 gi=dis1,i+disi,ng_i=dis_{1,i}+dis_{i,n},最后再跑一遍最短路求 gg
由于要对连续的区间连边,所以用 DS 优化建图。

评论

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

正在加载评论...