題意:有乙個字串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,...