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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SAM-模板和学习

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAM-模板和学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先上一道裸題代碼:給定若干個(<=10)由小寫字母組成的字符串(每個字符串長度不超過10^5),求他們的最長公共子串的長度。

?

用的是在每個字符串中間加間隔符,把它們合成一個字符串,最后 DFS + 標記 找答案的方法。

?

1 #include <stdio.h> 2 #include <unordered_map> 3 #include <string.h> 4 #include <vector> 5 6 using namespace std; 7 8 const int _N = 100005; 9 10 char str[_N]; 11 vector<int> G[_N*20]; 12 13 namespace SAM { 14 int root, tot, last, lcs, par[_N*20], mx[_N*20], mk[_N*20]; 15 unordered_map<int, int> son[_N*20]; 16 17 int Ins(int v_mx, int v_mk) { mx[++tot] = v_mx; mk[tot] = v_mk; return tot; } 18 19 void Init() { tot = 0; root = last = Ins(0, 0); return; } 20 21 void dfs(int node, int FULL) 22 { 23 for (int i = G[node].size()-1; i >= 0; --i) 24 dfs(G[node][i], FULL), mk[node] |= mk[G[node][i]]; 25 if (mk[node] == FULL && lcs < mx[node]) 26 lcs = mx[node]; 27 } 28 29 void GetLCS(int FULL) 30 { 31 int lcs = 0, i; 32 for (i = 1; i <= tot; ++i) 33 G[par[i]].push_back(i); 34 lcs = 0; 35 dfs(root, FULL); 36 return; 37 } 38 39 void Extend(int t, int id) 40 { 41 int np, nq, p, q; 42 np = Ins(mx[last] + 1, id);//--- 43 for (p = last; p && !son[p][t]; p = par[p]) 44 son[p][t] = np; 45 if (!p) { 46 par[np] = root; 47 } else { 48 q = son[p][t]; 49 if (mx[q] == mx[p] + 1) { 50 par[np] = q; 51 } else { 52 nq = Ins(mx[p] + 1, mk[q]);//--- 53 son[nq] = son[q]; 54 par[nq] = par[q], par[q] = par[np] = nq; 55 for ( ; p && son[p][t] == q; p = par[p]) 56 son[p][t] = nq; 57 } 58 } 59 last = np; 60 return; 61 } 62 63 } 64 65 int main() 66 { 67 int i, cnt = 1, len; 68 scanf("%s", str); 69 SAM::Init(); 70 len = strlen(str); 71 for (i = 0; i < len; ++i) 72 SAM::Extend(str[i]-'a', cnt); 73 while (scanf("%s", str) != -1) { 74 len = strlen(str); 75 cnt <<= 1; 76 SAM::Extend(26, cnt); 77 for (i = 0; i < len; ++i) 78 SAM::Extend(str[i]-'a', cnt); 79 } 80 SAM::GetLCS((cnt<<1)-1); 81 printf("%d\n", SAM::lcs); 82 return 0; 83 }

?

其實現在也不太會 SAM OrzOrzOrz,好像給自己埋了一個坑, SAM 相關的訓練也已經結束了,只能以后慢慢填啦。

這兩個月打了不少比賽,沒寫題解,等放假補吧OrzOrz...

轉載于:https://www.cnblogs.com/ghcred/p/9167731.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的SAM-模板和学习的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧洲人妻丰满av无码久久不卡 | 午夜视频国产 | av免费的| 在线看亚洲 | 免费一级片 | 一级黄色片毛片 | 天堂网视频在线观看 | 国产精久久一区二区三区 | 日批小视频 | 美女自拍视频 | 日本福利视频一区 | 干b视频在线观看 | 男女视频在线观看免费 | 人妻少妇偷人精品久久性色 | 伊人av在线 | 丰满的人妻hd高清日本 | 蜜桃臀一区二区三区 | 精品日韩制服无码久久久久久 | 国产美女一区二区 | 亚洲一区二区三区久久久 | 一区二区三区播放 | www.av欧美 | 国产精品乱码一区二三区小蝌蚪 | 91porny首页入口 | 综合色99| 国产9区 | 男男上床视频 | 国产精品桃色 | 亚洲成人免费 | 污视频免费在线观看网站 | 日本一区二区高清视频 | 秋霞影院午夜老牛影院 | 国产精品91一区二区 | 国产精品wwww | 欧美高清视频一区 | 成人国产av一区二区三区 | 狠色综合7777夜色撩人 | 亚洲国产精品成人综合在线 | 久久成人资源 | 日韩亚洲欧美在线 | 国产女主播av | 欧美激情一区二区 | 苏晴忘穿内裤坐公交车被揉到视频 | 欧美高清另类 | 伊在线久久丫 | 啪啪亚洲 | 韩国伦理片在线观看 | 欧美性xxxxx 亚洲特黄一级片 | 欧美日韩国产高清视频 | 欧美一级淫片免费视频魅影视频 | 日韩欧美国产综合 | 被各种性器调教到哭vk | 91精品国产欧美一区二区成人 | 亚洲欧美第一 | 国产精品久久麻豆 | 精品国产乱码久久久久久108 | 国产一卡二 | 亚洲玖玖玖 | 国产人妻人伦精品1国产盗摄 | 在线观看福利视频 | 精品国产一级久久 | 黄色在线免费 | 免费在线观看黄色av | 免费成人在线播放 | 另类综合网 | 深夜视频在线免费 | 欧美人与性动交xxⅹxx | 好吊妞视频这里只有精品 | 国产精品视频一区二区三区不卡 | 黄色一级播放 | 久久久久亚洲精品 | 午夜免费福利在线 | 日本一区二区高清视频 | 波多野结衣av在线播放 | 人妻少妇久久中文字幕 | 国产精品无码久久久久久 | 日韩在线一二三 | 日本视频色 | 欧洲精品无码一区二区 | 欧美成人高清视频 | 六月丁香激情 | 丰满少妇在线观看bd | 俺来也在线视频 | 撸大师av | 五月网站 | 在线免费激情视频 | 大肉大捧一进一出好爽动态图 | 成人无码一区二区三区 | 国产一级片毛片 | 在线欧美 | 91在线精品观看 | 青草伊人网| 天堂激情网 | jizjiz中国少妇高潮水多 | 久久久精| 色91av| 青草视频免费看 | 青青艹视频 | 久久九九99 |