社区讨论
90pts字典树求调
B4388[语言月赛 202508] 共享航班参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhjaz0ko
- 此快照首次捕获于
- 2025/11/03 23:36 4 个月前
- 此快照最后确认于
- 2025/11/03 23:36 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n,m,ans;
map<string,int>mm;
struct Trie{
int tr[N][150];
int idx;
int cnt[N];
void insert(string s){
int p=0;
for(int i=7;i<s.size();i++){
int u=s[i]-'0';
if(tr[p][u]==0)tr[p][u]=++idx;
p=tr[p][u];
}
cnt[p]++;
string x="";
for(int i=0;i<=1;i++)x+=s[i];
if(mm[x]==0){
ans++;
}
else if(cnt[p]==1&&mm[x]!=0){
ans++;
}
}
void init(){
for(int i=0;i<=idx;i++){
for(int j=0;j<150;j++)tr[i][j]=0;
cnt[i]=0;
}
idx=0;
}
}t[N];
int main()
{
//ios::sync_with_stdio(0);
//cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)t[i].init();
for(int i=1;i<=m;i++){
int x;
cin>>x;
for(int j=1;j<=x;j++){
string s;
cin>>s;
mm[s]=i;
}
}
for(int i=1;i<=n;i++){
string s,x="";
int p;
cin>>s;
for(int j=0;j<=1;j++)x+=s[j];
p=mm[x];
t[p].insert(s);
}
cout<<ans;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...