求字串中長度為k的本質不同串的個數

2021-10-07 10:07:37 字數 1375 閱讀 9900

如果僅僅求長度為k,使用滾動hash即可。

下面是求一段長度的本質不同串的個數。

lightoj - 1314 

求字串中長度為k的本質不同串的個數。

字尾自動機中每個節點包含著一段連續長度的子串,遍歷每個節點,記乙個差分陣列即可統計長度為1~|s|的不同子串個數。

(lightoj - 1314 ac**,原題統計長度p到q的本質不同子串的個數)

#include //#include using namespace std;

typedef long long ll;

typedef unsigned long long ull;

typedef unsigned int uint;

#ifdef local

#define debug(x) cout << "[" __function__ ": " #x " = " << (x) << "]\n"

#define time cout << "runingtime: " << clock() << "ms\n", 0

#else

#define time 0

#endif

#define hash_ 998244353

#define continue(x)

#define break(x)

const int mod = 1e9 + 7;

const int n = 1e4 + 10;

const int inf = 0x3f3f3f3f;

const ll linf = 0x3f3f3f3f3f3f3f3f;

#define gc p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin), p1 == p2) ? eof : *p1++;

inline int read()

ll fpow(ll a, int b, int mod) return res; }

int len[n << 1];

int lnk[n << 1];

int cnt[n << 1];

int nxt[n << 1][26];

int idx;

int last;

int tot;

int sub[n << 1];

char s[n];

int c[n];

void init()

void clear()

void extend(int c)

} last = x;

}void solve()

}int main()

return time;

}

求字串長度

問題及 檔名稱 main.cpp 作 者 王藝霖 完成日期 2016年3月20日 版 本 號 v1.0 問題描述 寫乙個函式,求乙個字串的長度,在main函式中輸出字元,並輸出其長度 輸入描述 輸入一行字串 輸出描述 輸出字串長度 includeusing namespace std int str...

求字串長度

目的 考察對strlen函式的使用 功能 求字串長度,統計並返回字串中第乙個 0 之前的有效字元的個數,注意不包括 0 占用的位元組數。strlen函式的常規寫法。include include int main 拓展 模擬實現strlen函式,求字串長度。0 是最關鍵的部分。include inc...

求字串長度

思路分析 迴圈法 呼叫函式傳參,迴圈條件為判斷字元陣列元素是否為真,若為真,引數加1,若為假返回0 遞迴法 遞推關係 1 strlen str 1 指標加1 出口 指標指向 0 完整 define crt secure no warnings include include include incl...