日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【正睿2021寒假省选第二轮集训 day 1】串 (后缀自动机+记忆化)

發布時間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【正睿2021寒假省选第二轮集训 day 1】串 (后缀自动机+记忆化) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

description

定義一個字符串的子串是這個字符串的某個連續區間的字符組成的串。比如,“djq"的子串是"d”,“j”,“q”,“dj”,“jq”,和"djq"。

定義F(a,b)為最長在字符串bb中至少出現一次的字符串a的子串,例如:
F(“dmqdjx”,“jdmqdx”) =4 給定n個字符串s0,s1,…,sn?1和q組詢問(xj,yj)
對于每組詢問你需要求出F(sxj,syj).

輸入格式
第一行兩個正整數n,q.
接下來n行每行一個由小寫字母組成的字符串表示si.
接下來q行每行兩個數xj,yj表示一組詢問。

輸出格式
輸出q行每行一個整數表示答案。

樣例
輸入樣例1

3 3
probieren
birkerem
sadasment
0 1
1 2
0 2

輸出樣例1

3
1
2

輸入樣例2

10 20
aaabbbbbaa
babbaaaabb
aaaabaabba
abbabaaaaa
ababaababa
aabbbbbbba
bbabaaabba
baaaababaa
abaaaaabab
baabbbbabb
1 7
1 8
7 8
7 7
4 4
9 1
5 5
5 8
2 9
8 2
0 7
4 8
5 8
3 0
6 2
2 5
2 2
7 1
5 2
1 1

輸出樣例2

6
5
7
10
10
4
10
3
5
6
4
5
3
3
5
4
10
6
4
10

數據范圍與提示
1≤n≤50000,1≤n≤100000,0≤xi,yi≤n?11\le n\le 50000,1\le n\le 100000,0\le x_i,y_i\le n-11n50000,1n100000,0xi?,yi?n?1

solution

非常原始的暴力:每一次都對yyy建后綴自動機,然后將xxx放上去匹配
肯定TTT,GG不用說

優化1: 每一次都重新建后綴自動機,著實太奢侈了
考慮將yyy排個序,相同的yyy就只建立一個后綴自動機,循環使用即可

優化2: 要知道后綴自動機匹配的時間就是xxx的長度
那么為了優化時間,每次就對長串建立后綴自動機,用短串去跑匹配

優化3: 記憶化!對于相同的xxx,沒有必要做無用功

然后就這么AAA了!!時間復雜度O(nn)O(n\sqrt{n})O(nn?)


還有另外一種方法,不過俺沒有寫

code

#include <cstdio> #include <vector> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 100005 struct SAM {int len, fa;int son[26]; }t[maxn]; struct node {int x, id;node(){}node( int X, int Id ) {x = X, id = Id;} }; vector < node > query[maxn]; vector < int > G[maxn]; int n, Q, cnt, last; char s[maxn]; int ans[maxn];void insert( int x ) {int pre = last, now = last = ++ cnt;t[now].len = t[pre].len + 1;while( pre && ! t[pre].son[x] ) t[pre].son[x] = now, pre = t[pre].fa;if( ! pre ) t[now].fa = 1;else {int u = t[pre].son[x];if( t[pre].len + 1 == t[u].len ) t[now].fa = u;else {int v = ++ cnt;t[v] = t[u];t[v].len = t[pre].len + 1;t[u].fa = t[now].fa = v;while( pre && t[pre].son[x] == u ) t[pre].son[x] = v, pre = t[pre].fa;}} }bool cmp( node x, node y ) {return x.x < y.x; }int solve( int u ) {int maxx = 0, len = 0, now = 1;for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i];while( t[now].fa && ! t[now].son[v] ) {now = t[now].fa;len = t[now].len;}if( t[now].son[v] ) {now = t[now].son[v];len ++;}maxx = max( maxx, len );}return maxx; }int main() {scanf( "%d %d", &n, &Q );for( int i = 0;i < n;i ++ ) {scanf( "%s", s );int len = strlen( s );for( int j = 0;j < len;j ++ )G[i].push_back( s[j] - 'a' );}for( int i = 1, u, v;i <= Q;i ++ ) {scanf( "%d %d", &u, &v );if( G[u].size() < G[v].size() ) swap( u, v );query[u].push_back( node( v, i ) );}for( int i = 0;i < n;i ++ ) {memset( t, 0, sizeof( t ) );cnt = last = 1;for( int j = 0;j < G[i].size();j ++ )insert( G[i][j] );sort( query[i].begin(), query[i].end(), cmp );int siz = query[i].size();for( int j = 0;j < siz;j ++ ) {ans[query[i][j].id] = solve( query[i][j].x );while( j < siz - 1 && query[i][j].x == query[i][j + 1].x ) {ans[query[i][j + 1].id] = ans[query[i][j].id];j ++;}}}for( int i = 1;i <= Q;i ++ )printf( "%d\n", ans[i] );return 0; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【正睿2021寒假省选第二轮集训 day 1】串 (后缀自动机+记忆化)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人福利午夜 | 奇米视频在线观看 | 中文不卡av | 韩国一区二区在线观看 | 91久久国产综合久久91 | eeuss鲁片一区二区三区在线观看 | 禁止18在线观看 | 国产精品伦理 | 亚洲性少妇 | 被黑人猛躁10次高潮视频 | 男生和女生差差的视频 | 成人亚洲精品 | 不卡三区 | 在线观看h网站 | 亚洲一区自拍偷拍 | 边打电话边做 | 在线免费看毛片 | 欧美成人第一页 | 日日操天天| av在线网址大全 | 日韩精品一区二区在线观看 | 全黄性高潮 | 鲁大师私人影院在线观看 | 久久美女视频 | 亚洲精品高清视频在线观看 | 在线观看不卡一区 | 日本做爰高潮又黄又爽 | 色哟哟视频网站 | 精品人妻无码中文字幕18禁 | 国产又粗又长又爽 | 欧美日韩精品一区 | 欧美亚洲日本 | 久久久久久久久久久影视 | 色综合av | 欧美成人一区在线观看 | 日本一区二区免费看 | 欧美日韩精品一区二区三区蜜桃 | 五月天综合激情 | 视频在线免费观看 | 每日av更新| 综合激情网五月 | 亚洲国产视频网站 | 老色鬼网站| 国产午夜久久 | 亚洲蜜臀av一区二区三区 | 无码国产伦一区二区三区视频 | 日日夜夜爱 | 欧美精品1区2区3区 精品成人一区 | 有机z中国电影免费观看 | 午夜久久网 | 成人在线免费看视频 | 黄瓜污视频 | 就操网| 国产理论精品 | 操她视频在线观看 | 国产妞干网 | 在线不欧美 | 色噜噜狠狠成人中文 | 日韩在线第三页 | 婷婷视频 | 风间由美一区二区三区 | 日韩一二三四五区 | 日韩 欧美 亚洲 国产 | 国产777| 久久精品视频久久 | 欧美精品二区 | 天天干天天谢 | 男人天堂网在线视频 | 日本欧美www| 亚洲av无一区二区三区怡春院 | av网站大全在线观看 | 视频日韩| 就要操av | 午夜爱爱网站 | 在线看中文字幕 | 自偷自拍av | 色av导航| 日日操操 | 天天摸天天干 | 国产91高清 | 欲色网站| 国产又粗又硬又长又爽的演员 | 中文字幕av影片 | 久久精品国产77777蜜臀 | 日本熟女毛茸茸 | 欧美黄色性视频 | 天天综合天天色 | 亚洲熟妇中文字幕五十中出 | 波多野结衣一区二区三区免费视频 | 人人妻人人澡人人爽人人精品 | 中文字幕在线一 | 久久好色| 欧美日韩激情 | 国产又黄又粗又猛又爽视频 | 日韩精品系列 | www.天天操.com | 亚洲国产一区二区三区a毛片 | 天天色天天综合 | 天堂综合 |