橙题代码求调
  • 板块灌水区
  • 楼主YQD_Q
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/24 16:12
  • 上次更新2024/7/24 16:57:18
查看原帖
橙题代码求调
1274368
YQD_Q楼主2024/7/24 16:12

记录
题目链接

#include <bits/stdc++.h>
using namespace std;
struct st{
	int trie[200][26];
	int end[30000];
}N[1001];//几棵字典树 
string s;
int n,m,l,idx;

inline void build(int p){
	int cnt=1;
	for(int i=0;i<s.size();i++){
		int k=s[i]-'a';
		if(N[p].trie[cnt][k]==0) N[p].trie[cnt][k]=++idx;
		cnt=N[p].trie[cnt][k];
	}
	N[p].end[cnt]++;
}

inline int query(int p){
	int cnt=1;
	for(int i=0;i<s.size();i++){
		int k=s[i]-'a';
		if(N[p].trie[cnt][k]==0) return 0;
		cnt=N[p].trie[cnt][k];
	}
	return N[p].end[cnt];
}

signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>l; 
		idx=1;
		for(int j=1;j<=l;j++){
			cin>>s;
			build(i);
		}
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>s;
		int ans=0;
		bool b=0;
		for(int j=1;j<=n;j++){
			if(query(j)) b=1,cout<<j<<' ';
		} 
		if(b==1)cout<<endl;
	}
}
2024/7/24 16:12
加载中...