样例过了但是
查看原帖
样例过了但是
747369
CooooldWind_楼主2023/10/25 13:48

但是 又 红 又 黑(TLE)

#include<bits/stdc++.h>
using namespace std;

const int MAXN = 2e6 + 7;

int nxt[MAXN][130],node_cnt = 1;

void insert(string str){
	int pos = 1;
	for(int i = 0;i < str.length();i++){
		if(nxt[pos][str[i]] == 0)
			nxt[pos][str[i]] = ++node_cnt;
		pos = nxt[pos][str[i]];
	}
	nxt[pos][0] = MAXN + 6;
	return;
}

int search(string str){
	int pos = 1;
	for(int i = 0;i < str.length();i++){
		if(nxt[pos][str[i]] == 0) return false;
		else pos = nxt[pos][str[i]];
	}
	int cnt = 0;
	for(int i = 0;i <= 128;i++)
		if(nxt[pos][i] > 0) cnt++;
	return cnt;
}

void init(){
	memset(nxt,0,sizeof(nxt));
	node_cnt = 1;
	int n,q;
	cin >> n >> q;
	for(int i = 1;i <= n;i++){
		string tmp_str;
		cin >> tmp_str;
		insert(tmp_str);
	}
	for(int i = 1;i <= q;i++){
		string tmp_str;
		cin >> tmp_str;
		cout << search(tmp_str) << endl;
	}
	return;
}

int main(){
	int t;
	cin >> t;
	while(t--) init();
	return 0;
}
2023/10/25 13:48
加载中...