简要题意

\(t\) 组数据,每组数据给定 \(n\) 个长度不超过 \(10\) 的数字串,判断是否有两个字符串 \(A\) 和 \(B\),满足 \(A\) 是 \(B\) 的前缀,若有,输出 NO ,若没有,输出 YES

\(1 \leq t \leq 40,1 \leq n \leq 10000\)

思路

\(O(tn^2)\) 的 Hash 无法通过本题,考虑 Trie。

将 \(n\) 个字符串插入一个 Trie,然后枚举字符串 \(B\),如果存在字符串 \(A\) 是 \(B\) 的前缀,那么在字典树上遍历到 \(B\),中间必定经过 \(A\) 的最后一个字符表示的节点。

最终思路:将 \(n\) 个字符串插入一个 Trie,我们考虑维护一个布尔数组 \(E\),\(E_i\) 表示字典树节点 \(i\) 是否为一个输入的字符串的最后一个字符表示的节点,这个好维护。然后枚举 \(B\),在字典树中 DFS 到 \(B\),判断沿途节点是否存在 \(E_i=\operatorname{true}\) 即可。

时间复杂度 \(O(10nt)\)。

代码

#include <cstring>
#include <iostream>
#define int long long
using namespace std; int tree[100005][15],tot;
bool endd[100005];
string s[100005]; void insert(string x,int id){
int now=0;
for(char ch:x){
if(!tree[now][ch-'0']){
tree[now][ch-'0']=(++tot);
}
now=tree[now][ch-'0'];
}
endd[now]=1;
} void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
string x;
cin>>x;
insert(x,i);
s[i]=x;
}
for(int i=1;i<=n;i++){
int now=0;
for(char ch:s[i]){
if(endd[now]){
cout<<"NO"<<'\n';
return;
}
if(!tree[now][ch-'0']){
tree[now][ch-'0']=(++tot);
}
now=tree[now][ch-'0'];
}
}
cout<<"YES"<<'\n';
} signed main(){
int t;
cin>>t;
while(t--){
memset(tree,0,sizeof(tree));
memset(endd,0,sizeof(endd));
tot=0;
solve();
}
return 0;
}

最新文章

  1. 使用adjacent_difference要注意的小问题
  2. Ext.store.load callback
  3. 获取IOS 设备基本信息
  4. 【linux】locate介绍
  5. 是时候全面使用html5标签了
  6. 关于 Unity NavMesh 数据的导出和使用
  7. 基于bootstrap的轮播广告页,带图片和文字
  8. C++11之后,对源代码增加了UTF8和UCS4的支持(Windows内部使用Unicode,因为nt内核用的是ucs2,那是89年,utf8到了92年才发明出来)
  9. IdeasToComeTrue
  10. 关于cin.getline和cin.get
  11. spring mvc 异常处理和session添加
  12. H5前端框架推荐合集
  13. JQuery操作表单控件
  14. bzoj2330(差分约束)
  15. java IO流、集合类部分小知识点总结
  16. JAVA中生成、解析二维码图片的方法
  17. django2 用iframe标签完成 网页内嵌播放b站视频功能
  18. 爬虫之requests请求库
  19. Virtualbox+Vagrant环境准备
  20. PLSQL连接Oracle 数据库配置详解

热门文章

  1. 如何清除取消KMS激活
  2. C# 6.0 添加和增强的功能【基础篇】
  3. Windows7下驱动开发与调试体系构建——3.调试体系概述
  4. 三、Ocelot请求聚合与负载均衡
  5. Python基础之模块:1、模块的导入和使用
  6. Day16异常1
  7. nginx性能监控
  8. 实现将机器A上的程序包复制到机器B并更新的脚本
  9. 【题解】P7860 [COCI2015-2016#2] ARTUR
  10. Installing harbor-2.6.2 on openEuler