題目描述
給定n個字串s1,s2…sn,接下來進行m次詢問,每次詢問給定乙個字串t,求s1~sn中有多少個字串是t的字首。輸入字串的總長度不超過10^6,僅包含小寫字母。
輸入第一行兩個整數n,m。接下來n行每行乙個字串si。接下來m行每行乙個字串表示詢問。
輸出對於每個詢問,輸出乙個整數表示答案
樣例輸入
複製樣例資料
3 2ab
bcabc
abcefg
樣例輸出20
這是trie樹的插入
trie[i][j] = k; i是這個節點的編號,j是乙個字母,k是下乙個節點的編號
void insert(char *str)
root = trie[root][x];//跳到下乙個節點
} /*這個是用來統計字串字首的*/
//此時乙個字串已經插入到這棵樹了
//統計以root結束的字串有多少個
vis[root]++;
}
這是trie樹的查詢
int search(char *str)
return ans;
}
ac**
在這裡插入**片#include const int n = 1e6+10;
int trie[n][26];
int vis[n];
int tol = 0;
void insert(char *str)
root = trie[root][x];
} vis[root]++;
}int search(char *str)
return ans;
}int main()
while(m--)
return 0;
}
字首個數 字首統計
給定 n 個字串,s s dots s m 個詢問,每次詢問給定乙個字串 t 求出在 s s dots s 中有多少是 t 的子串 字串你的總長度 leq 10 先將所有的字串插入字典樹之中,然後對每次給定的字串 t 進行查詢操作,累計以其中每個字元結尾的字串個數即可 includeusing na...
142 字首統計 AcWing
原題鏈結 trie的基本運用 錯誤思路 將要查詢字首的字串構建字典樹,這樣的結果是每個字串都要重新構建一次樹,並且我們需要預先儲存要匹配字首的單詞,但題目單詞數目沒有講明,所以我們必須將建樹的字串互換.這樣建樹會導致mle 正解思路 將字首建樹,如果達到乙個結點有單詞就 1,如果沒有單詞就跳出 易錯...
CH 1601字首統計
描述 給定n個字串s1,s2 sn,接下來進行m次詢問,每次詢問給定乙個字串t,求s1 sn中有多少個字串是t的字首。輸入字串的總長度不超過10 6,僅包含小寫字母。輸入格式 第一行兩個整數n,m。接下來n行每行乙個字串si。接下來m行每行乙個字串表示詢問。輸出格式 對於每個詢問,輸出乙個整數表示答...