CF25E 字串雜湊 KMP

2021-08-07 11:03:04 字數 932 閱讀 1364

題意:

給定三個串,求包含這三個串的總串的最小長度。

思路:

字串雜湊。

當然,也可以用kmp,然而我自己沒有想到,看來對kmp的理解仍然不夠深。

這裡也引用一下其他博主的kmp做法。

實現:

#include 

using

namespace

std;

typedef

unsigned

long

long ull;

const ull b = 1e8 + 7;

const

int max_size = 1e5 + 10;

const

int inf = 0x3f3f3f3f;

char s[3][max_size];

int ans;

int type[6][3] = ;

bool contain(char* a, char* b)//a是否在b中出現過

return

false;

}//a的字尾和b的字首相等的最大長度

int overlap(char* a, char* b)

return ans;

}void solve()

else

if(contain(s[type[i][2]], s[type[i][1]]))

else

ans = min(ans, (int)(strlen(s[0]) + strlen(s[1]) + strlen(s[2]) - l1 - l2));

}cout

<< ans << endl;

}int main()

cf509e 數學 字串

題目大意 給定乙個字串,求任意子串中母音字母i,e,a,o,u,y 所佔比例之和。思路 咋一看很困難,細細一想就知道怎麼作了。因為要求所有子串,所以列舉每個長度,求出當前長度的所有子串的母音字母所佔比例,求和即為結果。接下來就是怎麼求所有子串中母音字母個數以及所佔比例了。因為當子串長度為i時,必然可...

CF 7D 字串雜湊 回文

定義k 回文串如下 1 任何串 包括空串 都是0 回文 2 乙個長度為n的回文串,若它的前n 2個字元和後n 2個字元都是 k 1 回文,則它是k 回文。現給定乙個串 長度不超過5,000,000 設它的每個字首分別是x 回文,求所有這些x值的和。比如abacaba,a 是1 回文,aba 是2 回...

字串雜湊

參照演算法筆記p109,甲級1039 先假設字串均由大寫字母a z構成。在這個基礎上,不妨把a z視為0 25,這樣就把26個大寫字母對應到了26進製中。接著,按照將26進製轉化為10進製的思路,由進製的轉換結論可知,在進製轉換過程中,得到的10進製肯定是唯一的,由此便可實現將字串對映為整數的需求 ...