(子串行)2504 是子串行的個數

2021-09-20 15:28:03 字數 1577 閱讀 7140

2 秒262,144 kb

20 分

3 級題

小b有乙個字串s和n個字串words[1...n],現在她想知道有多少個i滿足words[i]是s的子串行。

樣例解釋

a,acd,ace都是abcde的子串行,但bb不是。

收起

第一行輸入乙個由小寫字母組成的字串s;

第二行輸入乙個數n;

之後n行每行乙個字串,表示words[i]。

s的長度≤50000,1≤n≤5000,words[i]長度≤50.

輸出乙個數,表示答案。
abcde4a

bbacd

ace

3
題解:這種題經常見

#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps (1e-8)

#define max 0x3f3f3f3f

#define u_max 1844674407370955161

#define l_max 9223372036854775807

#define i_max 2147483647

#define re register

#define pushup() tree[rt]=max(tree[rt<<1],tree[rt<<1|1])

#define nth(k,n) nth_element(a,a+k,a+n); // 將 第k大的放在k位

#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 約瑟夫

#define ok() v.erase(unique(v.begin(),v.end()),v.end()) // 排序,離散化

using namespace std;

inline int read()

while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}typedef long long ll;

const double pi = atan(1.)*4.;

const int m=1e3+5;

const int n=1e5+5;

char s[n],a[100];

vectorvect[27];

int main()

for(int i=0;i<27;i++) vect[i].push_back(len);

int n;

scanf("%d",&n);

int cut=0;

while(n--)

ans=d+1;

}if(!leap) cut++;

}printf("%d\n",cut);

return 0;

}

2504 是子串行的個數

小b有乙個字串s和n個字串words 1.n 現在她想知道有多少個i滿足words i 是s的子串行。s的長度 50000,1 n 5000,words i 長度 50.樣例解釋 a,acd,ace都是abcde的子串行,但bb不是。存一下s各個字母的位置,比較時二分查詢。include inclu...

子串行的個數

龐果網題目 子串行的定義 對於乙個序列a a 1 a 2 a n 則非空序列a a p1 a p2 a pm 為a的乙個子串行,其中1 p1 還是靠動態規劃 設f k 為前k個數的子串行數目,則f 0 1 f k 與f k 1 有什麼關係呢?例如序列,k 2時的子串行有 0 1 2 01 02 12...

子串行的個數

子串行的定義 對於乙個序列a a 1 a 2 a n 則非空序列a a p1 a p2 a pm 為a的乙個子串行,其中1 p1例如4,14,2,3和14,1,2,3都為4,13,14,1,2,3的子串行。對於給出序列a,有些子串行可能是相同的,這裡只算做1個,請輸出a的不同子串行的數量。由於答案比...