jzoj4624 字串匹配 kmp

2021-07-14 22:53:14 字數 684 閱讀 9396

求乙個串在另乙個串複製n遍的串出現幾遍。顯然將兩個串做kmp,有很多重複,可以先把第二個串複製到比第乙個串長,計算結果,增長乙個串,計算結果,計算有多少個增長串,得到最終結果。

#include#include#include#include#include#define ll long long

#define fo(i,j,k) for(int i=j;i<=k;i++)

#define fd(i,j,k) for(int i=j;i>=k;i--)

using namespace std;

ll const maxn=100000;

ll n,sn,tn,fail[maxn+10],match[maxn*5+10];

char s[maxn+10],t[maxn*5+10];

int main()

fo(i,1,min(tn*n,tn*m+tn))

if(tn*n<=tn*m+tn)

ll tmp=0;

fo(i,1,tn*m)if(match[i]==sn)tmp++;

ll tmp2=0;

fo(i,tn*m+1,tn*m+tn)if(match[i]==sn)tmp2++;

printf("%lld",tmp+tmp2*(n-m));

return

0;}

201409 3 字串匹配

試題編號 201409 3 試題名稱 字串匹配 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小...

20140903 字串匹配

問題描述 試題編號 201409 3 試題名稱 字串匹配 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母...

201409 3 字串匹配

問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小...