洛谷3238 HNOI2014 道路阻塞 最短路 线段树(无代码)

29 篇文章 0 订阅
12 篇文章 0 订阅

题目链接

题意:
给你一个 n n n个点 m m m条边的有向带权图,给你输入一条长度为 l l l的从 1 1 1 n n n的最短路,问你把最短路上每一条边删去后从 1 1 1 n n n的最短路长度是多少。
n < = 1 e 5 , m < = 2 e 5 n<=1e5,m<=2e5 n<=1e5,m<=2e5

题解:
首先对于一条起点和终点都在这条最短路上,且本身不属于这条最短路的边,它的影响是最短路上连续的一段边,它们中任意一条被删去,答案都可以是原来的起点到这条边的起点加上这条边的长度再加上它到终点的长度。于是我们可以把这条最短路上的点按起点到终点的顺序变成一个序列,这样一条边的影响就变成了一个区间,可以用数据结构维护了。

但是显然除了最短路上的边,其他的边并不只是起点和终点都在最短路上的。对于其他边,影响也是类似的。用到这条边的新最短路,长度一定是起点到这条边的起点的最短路,加上这条边的长度,再加上这条边的终点到目标点的最短路。所以我们。需要处理起点到每个点的最短路和每个点到终点的最短路,其中后者将图反过来,用终点做源点跑最短路。这条边所影响的范围,说起来比较绕,来试图用数学语言描述一下。假设指定的最短路经过的点依次是 v 1 , v 2 , . . . , v l ( v 1 = 1 , v l = n ) v_1,v_2,...,v_l(v_1=1,v_l=n) v1,v2,...,vl(v1=1,vl=n),那么对于一条不在指定最短路上的边 ( u , v ) (u,v) (u,v),设从 1 1 1 u u u的每一条最短路中,属于顶点序列 v 1 , v 2 , . . . , v l v_1,v_2,...,v_l v1,v2,...,vl且顺序最靠后的点中,最靠前的是 v i v_i vi,从 v v v n n n的每一条最短路中,属于顶点序列 v 1 , v 2 , . . . , v l v_1,v_2,...,v_l v1,v2,...,vl且顺序最靠前的点中,最靠后的是 v j v_j vj,它影响的区间是 [ i , j ] [i,j] [i,j]。当然,这个区间可能会有开闭的问题,这里不仔细讨论了。这样转化之后,每条边的影响就变成了一个区间,然后拿个线段树维护区间最小值就行了。复杂度是一个 l o g log log

代码暂时没有。

杂事乱记:
转眼间已经一年没发博客了,但是博客还是没挂退役标签。犹豫再三,最后决定再打最后一年。
说一下为什么没写代码,主要是感觉现在会做写不出的时候很少,想不出的时候很多,所以想多练思维,把时间用在思考和总结上,打了这么多年竞赛,用一些不是很复杂的算法来解题在实现上并不算困难,更何况ACM还有模板可以参照。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值