序列自動機模板

2022-10-11 07:18:12 字數 542 閱讀 6544

題意:有乙個字串s1,現在給你n個字串s2,每次你需要回答s2是否是s1的子串行。

解題心得:

序列自動機其實就是先預處理出來乙個陣列,next[i][j]表示在位置 i 的後面第乙個字元 j 所在的位置,預處理出next陣列的複雜度就是log(n∗26)

每次詢問就是log(m)的複雜度(m是每次詢問字串的長度)。

#include using namespace std;

const int maxn = 1e5+100;

int next[maxn][30], n, len;

char first[maxn], second[maxn];

void init()

}for(int j=0;j<30;j++)

next[i-1][first[i] - 'a'] = i;

}}bool find()

return true;

}int main() else

}return 0;

}

序列自動機 模板

南昌邀請賽網路賽m題 subsequence 題意 給你乙個字串s,長度小於1e5,然後n次詢問,n小於1e5,每次輸入乙個字串t,問t是不是s的子串行。t長度小於1000 input abcdefg 3abc adgcba output yes yesno 思路 序列自動機其實就是先預處理出來乙個...

Subsequence(序列自動機模板題)

題目大意 給你乙個字串,然後再給你m個字串,然後問你在第乙個字串中不連續的子串能不能構成輸入的子串。具體思路 構建乙個序列自動機就可以了。剛接觸,記錄下 ac 1 include2 using namespace std 3 define ll long long 4 define inf 0x3f...

序列自動機

昨天在牛客碰到了這樣的一道題,判斷一些字串是不是原串的子串行,因為之前做過一些lcs子串行的題,就想,這不賊簡單,用lcs求一下每個子串和原串,然後判斷lcs的長度是不是等於要判斷的那個串的長度,然後,t了,因為dp求lcs幾個串還好說,但是當串又多又長時,不僅會t,dp陣列不弄滾動陣列還會mle,...