<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Border 的四種求法

      感覺都挺好玩的。

      不會都寫。會都不寫。

      Border 論做法

      border 可以被劃分成 log 個等差數列。配合 dbf 表等性質可以存儲下整個子串的 border。

      復雜度 \(O(n\log n)\),是最優的做法。不建議在沒對 SA 和 border 論有充分理解的情況下使用。

      鏈分治做法

      基于 parent tree。

      你需要兩種刻畫方式。

      第一個方式是 border 是前綴的后綴。于是從 r 開始往上跳,找 endpos 集合內的值。

      第二個方式是 border 相當于取一個 \([l,r)\) 內的前綴使得最長公共后綴不比前面部分小。

      最長公共后綴這種東西容易想到就是 parent tree 上的 lca。

      于是從根向 r dfs,統計其余子樹的貢獻。容易想到提前預處理出來。

      雖然兩個方式復雜度都不對但是一個是現求一個是預處理不是感覺很能平衡嗎?

      鏈分治,r 向上跳的過程中除了輕邊上的重兒子,其它的結點都是遍歷自己的輕子樹。輕子樹和是 \(O(n\log n)\) 的,可以預處理。

      輕邊上的重兒子只有 \(\log n\) 個,使用方式一即可。

      這種做法的另一種實現是點分治。

      DAG 鏈剖分

      開始大炮打蚊子。

      類似樹剖,任意一條路徑輕邊數量可以保證。

      \(f_i\) 為以 \(i\) 為終點的路徑數,\(g_i\) 為以 \(i\) 為起點的路徑數。\((u,v)\) 是重邊當且僅當 \(u\)\(v\) 入點中 \(f\) 最大的,\(v\)\(u\) 出點中 \(g\) 最大的。

      不難證明剖出來的是鏈。并且每次 \(f\)\(g\) 其中一定會有一個減半,所以只有 \(\log V\) 條輕邊。\(V\) 為路徑條數。

      這個除了 SAM 還真不知道有什么用的到。

      border 的一種刻畫方式:\([1,r]\) 的所有后綴與 \([l,n]\) 的所有前綴的交。前者跳 parent tree 的祖先鏈,后者即 SAM 上一條到 \(l\) 的鏈。

      基本子串結構

      鏈接

      當然也可以看原掄文。核武器轟草履蟲。應該是這里面最泛用的解法。

      根號分治

      四種求法有五個很正常吧。

      border 小的時候可以 hash check,大的時候考慮本質不同的 border 不會很多。

      暫咕。

      posted @ 2025-03-15 15:35  一念行空  閱讀(62)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 1精品啪国产在线观看免费牛牛| 亚洲AV无码东方伊甸园| 国产丰满老熟女重口对白| 妺妺窝人体色www聚色窝仙踪| 嫩b人妻精品一区二区三区| 深夜释放自己在线观看| 久久精品国产99国产精品澳门| 一区二区三区四区亚洲综合 | 国产一区二区三区精品久| 青青草一区二区免费精品| 久久99热只有频精品8| 精品天堂色吊丝一区二区| 久久精品无码中文字幕| 国产一区二区午夜福利久久| 大丰市| 日韩成人高精品一区二区| 成人无码午夜在线观看| 久久月本道色综合久久| 狠狠综合久久av一区二| 中文字幕在线观看一区二区| 精品蜜臀国产av一区二区| 99福利一区二区视频| 天干天干天啪啪夜爽爽99| 色欲久久综合亚洲精品蜜桃| 亚洲欧美中文字幕日韩一区二区| 麻豆精品在线| 激情伊人五月天久久综合| 欧美老少配性行为| 中文字幕日本一区二区在线观看| AV免费播放一区二区三区| 亚洲天堂一区二区三区四区| 中文字幕av无码免费一区| 老熟妇国产一区二区三区 | 欧美成人精品三级在线观看| 国产一区二区日韩在线| 丰满人妻一区二区三区高清精品 | 亚洲国产性夜夜综合| 无码丰满人妻熟妇区| 绩溪县| 国产一区二区波多野结衣| 99re6这里有精品热视频|