SAM總結(持續更新到放假) 好吧我已經放假了

2021-09-05 07:59:27 字數 3180 閱讀 9259

一.lcs(1e6)

最基礎的sam題,建第乙個串的sam,然後把第二個串放在上面跑的時候如果跑不動就回到root,不然就走下去。

code:

#include

const

int n=

2000005

;typedef

long

long ll;

using

namespace std;

char s[n]

,t[n]

;int n,len=

0,ans=0;

struct suffixautomaton}}

void

build()

void

calc()

ans=

max(ans,len);}

cout<}}sam;

intmain()

二.恐嚇信(usaco2011dec)

和lcs那個差不多,還要簡單一點,回原點的時候ans+1

code(略)

三.[sdoi2016]生成魔咒

#include

#define ll long long

using

namespace std;

inline

intread()

while

(isdigit

(ch)

)return res*f;

}const

int n=

2000005

;int n,add;

ll ans=0;

map<

int,

int>ch[n]

;int fa[n]

,l[n]

,last,tot;

inline

intcalc

(int x)

void

ins(

int c)}}

void

work()

}int

main()

四.[zjoi2015]諸神眷顧的幻想鄉

廣義字尾自動機,把trie樹上的每個葉子節點(此題只有20個)來倒著插入sam,然後統計答案就行

code:

#include

#define ll long long

using

namespace std;

inline

intread()

while

(isdigit

(ch)

)return res*f;

}const

int n=

2000010

;char s[n]

;int vis[n]

,head[n]

,nxt[n]

,cnt=0;

inline

void

add(

int x,

int y)

namespace sam

}return np;

}void

dfs(

int x,

int y,

int l)

void

work()

for(

int i=

1;i<=n;i++)if

(in[i]==1

)dfs

(i,0,1

);long

long ans=0;

for(

int i=

1;i<=tot;i++

) ans+

=l[i]

-l[fa[i]];

printf

("%lld\n"

,ans);}

}signed

main()

五.musical themes

實際上這題原資料n=20000,o(n

2)

o(n^2)

o(n2

)顯然不可做

我們發現變調雖然會改變量值大小,但並不會影響相鄰兩個數之間的差值,所以我們把所有數與相鄰的兩個數作差,將得到的值插入sam,然後就是求乙個串的最長重複子串(重複不能重疊)的問題了,會處理right的童鞋應該就都會了

不會處理right的話可以看看dzyo的部落格

code(略)

六.[noi2015]品酒大會

noi2015day1真的水 並查集離散化簽到題,樹剖果題都考了

先把串倒著插入,這樣字首就變成了字尾

發現串如果是r相似的,那麼他們一定是r-1,r-2,…1,0相似的

所以可以用類似於字首和的方式統計答案,然後就好做了

code:

#include

#define ll long long

#define inf 1000000000000000000ll

using

namespace std;

inline

intread()

while

(isdigit

(ch)

)return res*f;

}const

int n=

600005

;char s[n]

;int vis[n]

,head[n]

,nxt[n]

,cnt=0;

inline

void

add(

int x,

int y)

ll lmax

(ll a,ll b)

ll lmin

(ll a,ll b)

ll ans1[n]

,ans2[n]

;namespace sam}}

inline

void

build()

inline

bool

check

(int x)

void

dfs(

int v)

} ll a[n]

;void

work()

}int

main()

總結持續更新

1 從屬關係的區別 link屬於xhtml標籤,而 import是css提供的語法規則,link除了載入css,還可以定義rss,定義rel連線屬性等,import就只能載入css。2 載入順序的區別 頁面載入時,link會同時被載入,而 import引用的css會等頁面被載入完後再載入。3 相容性...

OpenCV 更新總結(持續更新)

基於 opencv git changelog 以下為自總結的部分關鍵點內容,需要檢視具體更新內容的,小手一點進入官方日誌 更新於 20210331 4.4.0 dnn 模組 由於 sift 專利已經過期,sift 加入到主分支,不再受contrib nonfree限制 支援yolov4,onnx增...

python好題集 持續更新

1 多選 下面的 哪些是執行會報錯的 a.int 33 b.int 3.3 c.float 3h d.str 1,3 答案解析 b選項 3.3 為字串,不能轉換成int c選項 3h是錯誤表達,不能進行轉換。故選bc 2 多選 定義這樣乙個函式 下面說法正確的是 defe1 print in e1 ...