zoukankan      html  css  js  c++  java
  • [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)左右了。

  • 相关阅读:
    linux下使用OpenCV的一些问题
    Google Colab调用cv2.imshow奔溃
    [LeetCode] Word Search
    信号
    信号
    [Leetcode] Subsets
    [LeetCode] Combinations
    [LeetCode] Minimum Window Substring
    [LeetCode] Set Matrix Zeroes
    sigaction 函数
  • 原文地址:https://www.cnblogs.com/GreenDuck/p/11516940.html
Copyright © 2011-2022 走看看