3 条题解
-
0
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int n,m,tot; int trie[1000010][27],cnt[1000010]; void in(char s[1000010]) { int len=strlen(s),p=0; for(int i=0;i<len;i++) { int ch=s[i]-'a'; if(!trie[p][ch]) trie[p][ch]=++tot; p=trie[p][ch]; } cnt[p]++; } int inster(char s[1000010]) { int ans=0; int len=strlen(s),p=0; for(int i=0;i<len;i++) { int ch=s[i]-'a'; p=trie[p][ch]; if(!p) return ans; ans+=cnt[p]; } return ans; } int main() { char s[1000010]; cin >> n >> m; for(int i=1;i<=n;i++) { scanf("%s",s); in(s); } for(int i=1;i<=m;i++) { scanf("%s",s); printf("%d\n",inster(s)); } return 0; }
信息
- ID
- 53
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 116
- 已通过
- 60
- 上传者