首页 > 其他 > 详细

[HNOI2014]道路堵塞

时间:2019-09-13 16:45:28      阅读:47      评论:0      收藏:0      [点我收藏+]

这是一篇没有代码的博客。目的是在全是玄学复杂度的算法中留下有复杂度保证的算法。

原文摘自千年之狐_天才 :

靠谱做法应该是A+线段树。用A跑k短路,第一次跑到的一定是所给最短路,其次跑到的所有最短路将答案更新。如果只是单纯这样的话,是不行的,因为所有路径都会被更新一次。但是我们不难发现一个信息,假设将最短路径上的点标号0-n0n,答案一定是0->u->v->n0>u>v>n,u,vu,v在最短路上(这个题解也说到了),而且u->vu>v与最短路交集为空。而且答案不会有两段不连续路径不和最短路有交集。因此我们在跑A*时记录一个optopt.
opt=0:if(下个点是最短路上的点)opt->0
   else opt->1
opt=1:if(下个点是最短路上的点)opt->2
   else opt->1
opt=2:线段树区间更新。
对于每个点,如果增广过来的左端点是一样的,只保留第一个,因为dis肯定是递增的,所以对于同一端点,每个点只会被增广到一次。(map or hash判断)这个非常关键否则可能被卡成指数级qwq。这样的话其实按理来讲应该就是O(mlogm)左右了。

 

[HNOI2014]道路堵塞

原文:https://www.cnblogs.com/GreenDuck/p/11516940.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!