#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;constint N =1e6+5;char a[105];int trie[N][30];int sum[N];int tot =0;int flag[N];voidbuild(int u){int head =0, i, j;for(j =0; a[j]; j++){
head =0;for(i = j; a[i]; i++){int x = a[i]-'a';if(trie[head][x]==0){
trie[head][x]=++tot;}
head = trie[head][x];if(flag[head]!= u)
sum[head]++;
flag[head]= u;}}}intfind(){int len =strlen(a);int head =0;int i;for(i =0; i < len; i++){int x = a[i]-'a';if(!trie[head][x])return0;
head = trie[head][x];}return sum[head];}intmain(){int t1, t2;scanf("%d",&t1);while(t1--){scanf("%s", a);build(t1);}scanf("%d",&t2);while(t2--){scanf("%s", a);printf("%d\n",find());}return0;}
题目大意:n个商品,m个字符串查询,对每个查询输出含有查询串为子串的商品个数解题思路:字典树,但是来自同一个串的后缀的相同前缀只能统计一次题目链接:>_<A C 代码:#include<stdio.h>#include<iostream>#include<string.h>using namespace std;const int N...