[學習筆記]後綴系列總結
後綴樹
後綴插到trie樹裏。 把許多節點壓到一起。節點數量是O(n)的 節點可以記錄原串的起始終止位置。 可以查詢子串。
性質: LCA深度為LCP長度 某個點的子樹葉子個數為點所代表的子串的出現次數。 按字典序dfs就是後綴排序結果。
後綴數組
求法:倍增,基於基數排序 對於SA LCP(i,j)=min(hei[i]) 可以枚舉一個k,去掉hei<k的,把SA數組根據Hei分成一些塊。 塊內的兩兩之間LCP的長度都大於等於k k可以枚舉,或者二分。
後綴自動機
核心: 1.Right集合 2.Parent樹的聯系 3
學習思考: 後綴樹 反串上建SAM的Parent樹就是後綴樹。 trie樹建後綴自動機
**求兩個串本質不同的公共子串個數
#號連接,然後跑後綴數組
SA序列,記錄所屬的字符串s1,或者s2
排列成形如:
s1
s2
s2
s1
s2
s1
...
新出現的公共子串一定是s1,s2之間的height(例如s1,s2後s2,s1)
然後考慮再次出現的時候去掉之前出現過的。
發現就是之前上一次s1,s2的LCP位置取min過來的長度,減去即可。
[學習筆記]後綴系列總結
相關推薦
[學習筆記]後綴系列總結
多節點 後綴數組 再次 後綴自動機 深度 排列 連接 發現 bsp 後綴樹 後綴插到trie樹裏。 把許多節點壓到一起。節點數量是O(n)的 節點可以記錄原串的起始終止位置。 可以查詢子串。 性質: LCA深度為LCP長度 某個點的子樹葉子個數為點所代表的子串的出現次數。
[學習筆記]後綴平衡樹
例題 putchar query view printf \n eve 字典序 線段樹 後綴數組+平衡樹=後綴平衡樹 支持動態插入字符(只能往前插入),即插入一個後綴,維護所有後綴的排名 插入後綴找到位置?平衡樹上二分 法一: 哈希+二分,太慢 法二: 第一個字
【算法學習】後綴數組
適合 class 初學 從大到小 更新 continue log printf post 一個字符串的題,有姿勢水平的OIers的腦中應該要浮現出許多算法…… 但是我沒有姿勢,也沒有水平,除了KMP和trie樹,什麽也想不起來。 直到我學了它——後綴數組! 多虧這玩意兒,我
[OI筆記]後綴自動機
感覺 情況 一個 ttl 後綴自動機 代碼 inline memset 課件 本來沒打算寫的,不過想想看後綴自動機的理論看了兩三天了才有點懂(我太傻了)…下周期末考的話大概要去復習一下文化課感覺回來又要忘得差不多,還是開篇blog記一下好了。 相關的資料: cls當年的
Linux運維學習筆記-定時任務知識總結
man 學習筆記 標準 null 流程 borde 知識 定時腳本 top 定時任務編輯規範流程: 重要知識點: 切記用全路徑編寫定時腳本、定時任務 大部分在 crontab 計劃任務中都會年到未尾帶 >/dev/null 2>&1,是什麽意思呢
後綴數組 && 後綴自動機 總結
機智 其他 自己 pan 重要 CP 不同 由於 com 後綴數組(SA) 後綴數組的構造 放板子,其它的百度。 我當時學習看的博客:戳我的都是大佬 IL bool cmp(RG int i,RG int j,RG int k){return cy[i]==cy[j] &a
Ceres學習筆記之CMakeLists寫法總結
Ceres學習筆記之CMakeLists寫法總結 高博說:不要長期徘徊在自己的舒適區裡猶豫不決,這樣是沒有進步的。 這句話開啟了我的SLAM後端優化學習之路。本文從CMakeLists開始,總結常用的各個庫在CMakeLists中的寫法。 眾人:哇!又是這麼小兒科的嗎? 博主:哎呀~~不
Java學習筆記:原型模式總結
type tex 實現類 null ges 復制 n) getattr ado 原型模式(Prototype Pattern)是首先創建一個原型對象,再通過復制這個原型對象來創建更多同類型的對象。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 這種模式是
MyBatis學習筆記之@Results用法總結
MyBatis中使用@Results註解來對映查詢結果集到實體類屬性。 (1)@Results的基本用法。當資料庫欄位名與實體類對應的屬性名不一致時,可以使用@Results對映來將其對應起來。column為資料庫欄位名,porperty為實體類屬性名,jdbcTy
Kafka 學習筆記(4)—— Kafka總結
1 Kafka 是什麼 類似JMS訊息佇列,結合JMS中的兩種模式,可以有多個消費者主動拉取資料,在JMS中只有點對點模式才有消費者拉取資料。 kafka 是一個生產-消費模型。 Producer:生
學習筆記 --- Java 併發程式設計總結二 ThreadLocal
ThreadLocal是什麼 ThreadLocal是一個本地執行緒副本變數工具類。主要用於將私有執行緒和該執行緒存放的副本物件做一個對映,各個執行緒之間的變數互不干擾,在高併發場景下,可以實現無狀態的呼叫,特別適用於各個執行緒依賴不通的變數值完成操作的場景。 下圖為Threa
學習筆記 --- Java 併發程式設計總結一 countDownLatch,CyclicBarrier,Semaphore
在多執行緒程式設計中有三個同步工具需要我們掌握,分別是Semaphore(訊號量),countDownLatch(倒計數門閘鎖),CyclicBarrier(可重用柵欄) CountDownLatch和CyclicBarrier都能夠實現執行緒之間的等待,只不過它們側重點不同:
Docker學習筆記 — Docker應用場景總結
學習Docker也有一段時間了,瞭解了Docker的基本實現原理,也知道了Docker的使用方法,這裡對Docker的一些典型應用場景做一個總結吧。如果發現有新的應用場景,再對筆記進行更新。 當前,Docker主要還使用在簡化開發流程和運維上面,貌似還算不上雲
目標檢測系列學習筆記(RCNN系列+YOLO系列)
小白一枚 記錄學習點滴裡面的“?”是我還沒有太看懂的部分1. RCNNarticle: Rich feature hierarchiesfor accurate object detection and semantic segmentation(2014)
IOS學習筆記67-IOS8系列之應用擴充套件
一、擴充套件概述 擴充套件(Extension)是iOS 8中引入的一個非常重要的新特性。擴充套件讓app之間的資料互動成為可能。使用者可以在app中使用其他應用提供的功能,而無需離開當前的應用。 在iOS 8系統之前,每一個app在物理上都是彼此獨立的,ap
Webpack學習筆記九 webpack優化總結
rules 直接 new maxsize 正則表達式 parse 字節 提高 UNC webpack 優化筆記 webpack4 自帶的優化包括 swingTree(搖擺樹)和作用域提升 swingTree 比如入口文件 index.js引入通用方法 util, 裏面有
Android學習筆記:Android資源總結
Android應用資源可分為兩大類: 1、無法直接訪問的原生資源,儲存在asset目錄下,應用程式可以使用AssetManager來訪問這些資源 2、可以通過R資源清單類訪問的資源,儲存在res目錄下 先來看原生資源,指的就是跟android無任何關係可以獨立存在的檔案,
python 學習筆記 7 -- Python關鍵字總結
0.寫在前面的話 學習一門語言最重要的功課是練習與複習,在《笨方法學Python》中第三十七節雖然沒有教你任何內容,但是它提醒我們:“學了這麼多,你還能記得多少?該複習了!” 下面我們就對這一節的第一部分“關鍵字”來做個複習: Python中的關鍵字包括如下: and
【C++】學習筆記草稿版系列11(運算子過載)
運算子過載和友元之間是如何發生關係的 友元過載,成員過載 單目和雙目運算子可以過載 通常情況下: 雙目運算子過載為成員的話需要一個引數,過載為友元的話需要兩個引數 const Comple
學習筆記:後綴表達式
優先級 amp == add else get stringbu exception try 一、中綴表達式轉換為後綴表達式 ①掃描中綴表達式。 ②遇到數字將其存入後綴表達式。 ③遇到左括號將其入棧。 ④遇到右括號,出棧運算符並存入後綴表達式,直至遇到左括號,將左括號出棧結