蜜汁代码无法编译求助 悬关
查看原帖
蜜汁代码无法编译求助 悬关
1268478
時空楼主2024/8/9 16:47
#include <bits/stdc++.h>

#define FstIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define pb push_back
#define mem(a, v) memset(a, v, sizeof a)
#define pii pair<ll, ll>

using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
 
const ll N = 2e6 + 5, M = 2e2 + 5; 
const ll mod = 1e9 + 7, mod2 = 998244353;
const ld eps = 1e-6;

ll t;

ll n, q;

ll Trie[N][M], cnt[N], idx;

ll get(char c)
{
	if (c >= 'A' && c <= 'Z') return c - 'A';
	if (c >= 'a' && c <= 'z') return c - 'a' + 26;
	return c - '0' + 52;
}

void insert(string s)
{
	ll p = 0;
	for (ll i = 0; i < s.size(); i ++ )
	{
		ll q = get(s[i]);
		if (!Trie[p][q])
			Trie[p][q] = ++ idx;
		p = Trie[p][q];
		++ cnt[p];
	}	
}

ll find(string s)
{
	ll p = 0;
	for (ll i = 0; i < s.size(); ++ i )
	{
		ll q = get(s[i]);
		if (!Trie[p][q]) return 0;
		p = Trie[p][q];
	}
	return cnt[p];
}

signed main()
{
//	freopen("Trie.in", "r", stdin);
//	freopen("Trie.out", "w", stdout);

	FstIO; 
	
	cin >> t;
	while (t -- )
	{
		
		for (ll i = 0; i <= idx; ++ i )
			for (ll j = 0; j <= 150; ++ j )
				Trie[i][j] = 0;
		for (ll i = 0; i <= idx; ++ i ) cnt[i] = 0;
		idx = 0;
		
		cin >> n >> q;
		for (ll i = 1; i <= n; ++ i ) 
		{
			string s; cin >> s;
			insert(s);
		}
		while (q -- )
		{
			string s; cin >> s;
			cout << find(s) << '\n';
		}
		
	}
	
	return 0;
	
	cout.flush();
}
2024/8/9 16:47
加载中...