why RE??????
查看原帖
why RE??????
1251774
fanjiayu666楼主2024/10/29 21:12
#include<bits/stdc++.h>
using namespace std;
struct trie{
    int nex[1000010][26],cnt;
    int end[1000010];
    void insert(char s[],int l){
        int p=0;
        for(int i=0;i<l;i++){
            int c=s[i]-'a';
            if(!nex[p][c])nex[p][c]=++cnt;
            p=nex[p][c];
        }
        end[p]++;
    }
    int find(char s[],int l){
        int p=0,ans=0;
        for(int i=0;i<l;i++){
            int c=s[i]-'a';
            if(end[p])ans=end[p];
            if(!nex[p][c])return ans;
			p=nex[p][c];
        }
        if(end[p])ans+=end[p];
        return ans;
    }
};
int main(){
	int n,m;
    trie tree;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        char s[1000010];
    	cin>>s;
        tree.insert(s,strlen(s));
    }
    for(int i=1;i<=m;i++){
        char s[1000010];
		cin>>s;
        cout<<tree.find(s,strlen(s))<<endl;
    }
    return 0;
}
2024/10/29 21:12
加载中...