• [HNOI2014]道路堵塞


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

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

    靠谱做法应该是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)左右了。

  • 相关阅读:
    HTML中visibility:hidden 和 display:none 的区别及实例?
    新手css学习
    关于新手html的认识
    学习前端第一天(上午)
    0528学习笔记
    愉快的一天
    今日份学习的快乐
    javascript(2)
    javascript
    CSS基础(2)
  • 原文地址:https://www.cnblogs.com/GreenDuck/p/11516940.html
Copyright © 2020-2023  润新知