加强数据
查看原帖
加强数据
986065
zhizuyazi0911楼主2025/7/25 20:22
#include <bits/stdc++.h>
using namespace std;
const int N = 3e6 + 5;
int q, n, t[N][65], cnt[N],id;
char s[N];

int getnum(char x) {
	if (x >= 'A' and x <= 'Z') return x - 'A';
	else if (x >= 'a' and x <= 'z') return x - 'a' + 26;
	else return x - '0' + 52; 
}

void insert(char str[]) {
	int p = 0, len = strlen(str);
	for (int i = 0; i < len; i++) {
		int c = getnum(str[i]);
		if (!t[p][c]) t[p][c] = ++id;
		p = t[p][c];
		cnt[p]++;
	}
}

int find(char str[]) {
	int p = 0, len = strlen(str);
	for (int i = 0; i < len; i++) {
		int c = getnum(str[i]);
		if (!t[p][c]) return 0;
		p = t[p][c];
	}
	return cnt[p];	
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int T;
	cin >> T;
	while (T--) {
		for (int i = 0; i < id; i++) for (int j = 0; j <= 122; j++) t[i][j] = 0;
		for (int i = 0; i < id; i++) cnt[i] = 0;
		id = 0;
		cin >> n >> q;
		for (int i = 1; i <= n; i++) {
			cin >> s;
			insert(s);
		}	
		for (int i = 1; i <= n; i++) {
			cin >> s;
			cout << find(s) << "\n";
		}
	} 
	return 0;
} 

以上的错误代码交上去仍能AC 错因在于第 49 行 for 循环内应为循环 q 次 因此建议加强数据 @kkksc03 @一扶苏一

2025/7/25 20:22
加载中...