1 条题解
-
0
手搓Tire
#include<bits/stdc++.h> using namespace std; const int N=1e4+5; int tr[N*50][26]; int idx,tag[N*50]; inline void insert(string s){ int u=0; for(auto c:s){ if(!tr[u][c-'a']){ tr[u][c-'a']=++idx; } u=tr[u][c-'a']; } tag[u]=1; } inline int search(string s){ int u=0; for(auto c:s){ if(!tr[u][c-'a']){ return -1; } u=tr[u][c-'a']; } if(!tag[u]){ return -1; } if(tag[u]==2){ return 0; } tag[u]=2; return true; } int main(){ int n,m; cin>>n; for(int i=1;i<=n;i++){ string s; cin>>s; insert(s); } cin>>m; for(int i=1;i<=m;i++){ string s; cin>>s; auto ans=search(s); if(ans==-1){ puts("WRONG"); } else if(ans){ puts("OK"); } else{ puts("REPEAT"); } } return 0; }
- 1
信息
- ID
- 1528
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 9
- 已通过
- 5
- 上传者