後綴數組(SA)學習筆記
淺談後綴數組
後綴數組是個啥?
前置芝士:基數排序
後綴數組的基本模板(luoguP3809)
基數排序:
num[i]:原有數組
c[i]:桶
p[i]:排序過後的東西,代表第i位的是多少
n:num數量
m:num的種類(範圍)
for(int i=1;i<=n;++i)c[num[i]]++;
for(int i=1;i<=m;++i)c[i]+=c[i-1];
for(int i=1;i<=n;++i)p[c[num[i]]--]=i;
這種排序是O(n)的,適用於數據種類比較小的情況下,例如只包含小寫字母的字符串。
占坑,未完待續
後綴數組(SA)學習筆記
相關推薦
後綴數組(SA)學習筆記
類比 淺談 後綴數組 多少 排序 -- += 數組 後綴 淺談後綴數組 後綴數組是個啥? 前置芝士:基數排序 後綴數組的基本模板(luoguP3809) 基數排序: num[i]:原有數組 c[i]:桶 p[i]:排序過後的東西,代表第i位的是多少 n:num數量 m:
後綴數組(SA)
字符串 快速 c++程序 amp 思想 spa isdigit cor orz 學習了LRJ神犇的代碼。orz。 首先真心建議了解下基數排序!!且要有一定的c++程序經驗,否則程序很難看懂。 然後對著下面的程序調試(假裝你已經會了算法思想) 弄個一個禮拜一下午就能學會
後綴數組(學習筆記)
ostream nbsp blog pac html sin swa class auto 後綴數組用來處理一類字符串問題 學習博客 https://www.cnblogs.com/victorique/p/8480093.html#autoid-1-2-1 例題1 :
UVA 12338:Anti-Rhyme Pairs(後綴數組+ST表)
後綴數組 min -1 class break nbsp con mem span 【題目鏈接】 click 【題目大意】 給出一些字符串,詢問查詢任意兩個字符串的最長公共前綴 【題解】 將字符串拼接,對拼接的字符串做後綴數組,對於查詢的兩
POJ 3581 Sequence (後綴數組+離散化)
return har tag contains nes string 字符 eight ssi
Ural 1297 Palindrome(Manacher或者後綴數組+RMQ-ST)
奇數 receive scribe exce rmq channel ignore uri turn 1297. Palindrome Time limit: 1.0 second Memory limit: 64 MB The “U.
【bzoj3238】差異[AHOI2013](後綴數組+單調棧)
algorithm char tar 最小 one eight can ont 會有 題目傳送門:http://www.lydsy.com/JudgeOnline/problem.php?id=3238 這道題從大概半年以前就開始啃了,不過當年因為一些細節沒調出來,
BZOJ3998 TJOI2015弦論(後綴數組+二分答案)
print eof read 二分 否則 二分答案 scan out close 先看t=1的情況。顯然得求出SA(因為我不會SAM)。我們一位位地確定答案。設填到了第len位,二分這一位填什麽之後,在已經確定的答案所在的範圍(SA上的某段區間)內二分,找到最後一個小於當前
【SPOJ220】Relevant Phrases of Annihilation(後綴數組,二分)
spa std spoj lse map sign math vector mod 題意: n<=10,len<=1e4 思路: 1 #include<cstdio> 2 #include<cstring> 3 #incl
Luogu4770 NOI2018你的名字(後綴數組+線段樹)
上一個 \n log math operator pen 不同 ios bsp 即求b串有多少個本質不同的非空子串,在a串的給定區間內未出現。即使已經8102年並且馬上就9102年了,還是要高舉SA偉大旗幟不動搖。 考慮離線,將所有詢問串及一開始給的串加分隔符連起來
BZOJ 2865(後綴數組+線段樹)
sin 數組 我們 無法 ios max eight char s void 很容易想到只考慮後綴長度必須為\(max(height[rk[i]],height[rk[i]+1])+1\)(即\([i,i+x-1]\)代表的串只出現過一次)然後我正著做一遍反著做一遍,再取一
後綴數組(筆記)
lin ++i 小時 ret 類型 cst htm strlen .html dalao的博客,講的很詳細 倍增法:設當前已知各後綴的前 \(2^k\) 個字符的相對大小關系(即排名數組 \(rank\)), 於是只要用 \((rank[i], rank[i + 2 ^k]
POJ 3261 Milk Patterns(後綴數組+二分答案)
語言 什麽 運算 及其 fin -i wap 結構 -- 題意 給定一個長度為 \(n?\) 的由正整數構成的串和一個整數 \(K?\),求至少出現 \(K?\) 次的串的最長長度(可以重疊)。 \(1 \leq n\leq 20000?\) \(2\leq K\leq n
POJ 1743 Musical Theme(後綴數組+二分答案)
spa 二分 min 題目 cal get true %d 一段 題意 長度為 \(n\) 由數字構成的串,求一段最長滿足以下要求的子串: 長度至少為 \(5\) 在其他位置有一個不相交的等長子串滿足原串或原串加上或減去一個數後與之完全相同。 \(1\leq 20000
POJ 3693 Maximum repetition substring(後綴數組+ST表)
%s 是否 很難 span 順序 template else if lse turn 題意 定義一個字符串的復讀數為它可以被分割成最多的的若幹個相同連續的子串個數,求一個字符串中復讀次數最大的子串位置,若有相同,輸出字典序最小的。 \(1 \leq \text{length
[HDU2328]Corporate Identity(後綴數組)
break acm ring sed fin 方法 con str 拼接 傳送門 求 n 個串的字典序最小的最長公共子串。 和 2 個串的處理方法差不多。 把 n 個串拼接在一起,中間連上一個沒有出現過的字符防止匹配過界。 求出 height 數組後二分公共子
[TyvjP1515] 子串統計 [luoguP2408] 不同子串個數(後綴數組)
eight height gif nbsp getchar() aac ble %d org Tyvj傳送門 luogu傳送門 經典題 統計一個字符串中不同子串的個數 一個字符串中的所有子串就是所有後綴的前綴 先求出後綴數組,求出後綴數組中相鄰兩後綴的 lc
【後綴數組】【RMQ】HDU 6194 - string string string (2017ICPC沈陽網絡賽)
namespace 記得 initial acmer panel tom 技術 one ack string string string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768
【轉】HDU 6194 string string string (2017沈陽網賽-後綴數組)
char 還要 至少 ace rank using lock long std 轉自:http://blog.csdn.net/aozil_yang/article/details/77929216題意:告訴你一個字符串和k , 求這個字符串中有多少不同的子串恰好出現了k
(後綴數組/Trie)HDU 6138-Fleet of the Eternal Throne
cto ould itl nal pan iostream row onf map Fleet of the Eternal Throne Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536