0分求条
查看原帖
0分求条
1040386
chenyiran2012楼主2025/7/22 11:12
#include<bits/stdc++.h>
using namespace std;
struct node{
	long long ol[10];
	long long fg;
}s[500010];
long long tot=1,cs=1;
long long n,m,t;
void build(string y){
	cs=1;
	for (int i=0;i<y.size();i++){
		if (s[cs].ol[y[i]]==0){
			s[cs].ol[y[i]]=++tot;
		}
		cs=s[cs].ol[y[i]];
		s[cs].fg++;
	}	
}
long long q(string sp){
	cs=1;
	for (int i=0;i<sp.size();i++){
		if (s[cs].ol[sp[i]]==0){
			return 0;
		}
		cs=s[cs].ol[sp[i]];
	}
	return s[cs].fg;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> m >> n;
	for (int i=1;i<=n;i++){
		for (int j=0;j<10;j++){
			s[i].ol[j]=0;
			s[i].fg=0;
		}
	}
	for (int i=1;i<=m;i++){
		long long x;
		cin >> x;
		string yh="";
		for (int j=1;j<=x;j++){
			long long y;
			cin >> y; 
			yh+=char(y+'0');
		}
		build(yh);
	}
	for (int i=1;i<=n;i++){
		long long x;
		cin >> x;
		string sl="";
		for (int j=1;j<=x;j++){
			long long y;
			cin >> y;
			sl+=char(y+'0');
		}
		cout << q(sl) << '\n';
	}
	return 0;
}
2025/7/22 11:12
加载中...