社区讨论
52pts求条
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mm8vr1i2
- 此快照首次捕获于
- 2026/03/02 15:51 上周
- 此快照最后确认于
- 2026/03/02 15:52 上周
WA on #2,#3,#4。(题目:P8306)玄关。
CPP#include <bits/stdc++.h>
using namespace std;
int ch[3000002][62],idx=0,cnt[3000002];
void tl(string s,int n){
int p=0,j;
for(int i=0;i<n;i++){
if('0'<=s[i] && s[i]<='9')j=s[i]-'0';
else if('A'<=s[i] && s[i]<='Z')j=s[i]-'A'+10;
else j=s[i]-'a'+36;
if(!ch[p][j])ch[p][j]=++idx;
p=ch[p][j];
cnt[p]++;
}
}
int find(string s,int m){
int p=0,j;
for(int i=0;i<m;i++){
if('0'<=s[i] && s[i]<='9')j=s[i]-'0';
else if('A'<=s[i] && s[i]<='Z')j=s[i]-'A'+10;
else j=s[i]-'a'+36;
if(!ch[p][j])return 0;
p=ch[p][j];
}
return cnt[p];
}
int main(){
int T;cin>>T;
string a;
int max1=0;
while(T--){
idx=0;
int n,q;cin>>n>>q;
for(int i=0;i<n;i++){
cin>>a;
if(a.size()>max1)max1=a.size();
tl(a,a.size());
}
for(int i=0;i<q;i++){
cin>>a;
cout<<find(a,a.size())<<endl;
}
for(int i=0;i<=max1;i++){
cnt[i]=0;
for(int j=0;j<62;j++)ch[i][j]=0;
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...