给出一个电话列表,如果列表中存在其中一个号码是另一个号码的前缀这一情况,那么就称这个电话列表是不兼容的。

假设电话列表如下:

·Emergency 911
·Alice 97 625 999
·Bob 91 12 54 26

在此例中,报警电话号码(911)为Bob电话号码(91 12 54 26)的前缀,所以该列表不兼容。

输入格式

第一行输入整数t,表示测试用例数量。

对于每个测试用例,第一行输入整数n,表示电话号码数量。

接下来n行,每行输入一个电话号码,号码内数字之间无空格,电话号码不超过10位。

输出格式

对于每个测试用例,如果电话列表兼容,则输出”YES”。

否则,输出”NO”。

数据范围

1≤t≤401≤t≤40,
1≤n≤100001≤n≤10000

输入样例:

2
3
911
97625999
91125426
5
113
12340
123440
12345
98346

输出样例:

NO
YES
题意:让你判断电话列表有没有矛盾
思路:前缀判断,我们用trie,首先我们存下每个串最后出现的位置+1,然后后面的字符串遍历的时候,如果路径上有过+1,说明有字符串在这里终止成为了这个串的前缀,所以为NO
因为判断时判断前面的能不能成为后面串的前缀,所以我们首先按照长度从小到大排序、
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
int ch[maxn][];
int dp[maxn];
string str[maxn];
int tot=;
int insert(string s){
int p=;
for(int i=;i<s.size();i++){
int k=s[i]-'';
if(ch[p][k]==) ch[p][k]=++tot;
p=ch[p][k];
//dp[p]++;
if(dp[p]) return ;
}
dp[p]++;
return ;
}
int cmp(string x,string y){
return x.size()<y.size();
}
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
tot=;
memset(ch,,sizeof(ch));
memset(dp,,sizeof(dp));
int flag=;
for(int i=;i<n;i++){
cin>>str[i];
}
sort(str,str+n,cmp);
for(int i=;i<n;i++){
int k=insert(str[i]);
if(k==){
flag=;
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
}
 

AcWing 161. 电话列表 (trie)打卡的更多相关文章

  1. vue,element列表大数据卡顿问题,vue列表渲染慢,element表格渲染慢,表格渲染慢(卡),表格全选卡

    https://github.com/livelyPeng/pl-table 一个表格组件(完美解决万级数据渲染卡顿问题),流畅渲染万级数据并不会影响到el-table的原有功能 分析: 前端UI框架 ...

  2. vue,element列表大数据卡顿问题,vue列表渲染慢

    https://github.com/livelyPeng... 一个表格组件(完美解决万级数据渲染卡顿问题),流畅渲染万级数据并不会影响到el-table的原有功能 分析: 前端UI框架使用的是El ...

  3. 想让安卓app不再卡顿?看这篇文章就够了

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由likunhuang发表于云+社区专栏 实现背景 应用的使用流畅度,是衡量用户体验的重要标准之一.Android 由于机型配置和系统的 ...

  4. android 数据存储&lt;一&gt;----android短信发送器之文件的读写(手机+SD卡)

    本文实践知识点有有三: 1.布局文件,android布局有相对布局.线性布局,绝对布局.表格布局.标签布局等,各个布局能够嵌套的. 本文的布局文件就是线性布局的嵌套 <LinearLayout ...

  5. 赵雅智_service电话监听2加接通电话录音

    步骤: 创建CallStateService继承Service 取得电话服务 监听电话动作 电话监听的对象 没有电话时 停止刻录 重设 刻录完毕一定要释放资源 电话响铃时 从麦克风採集声音 内容输出格 ...

  6. android 数据存储----android短信发送器之文件的读写(手机+SD卡)

    本文实践知识点有有三: 1.布局文件,android布局有相对布局,线性布局,绝对布局,表格布局,标签布局等.各个布局能够嵌套的.本文的布局文件就是线性布局的嵌套 <LinearLayout x ...

  7. Android Framework 其中A记录

    一个简短的引论 以往的研究太偏应用层的功能,实现了,原则上不进入非常理解,现在,研究人员framework该框架层. 创纪录的 1.下载源代码,文件夹例如以下: 2.Android系统的层次例如以下: ...

  8. Android Framework 学习和需要学习的内容

    1. 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework面存一些资料待有空查看. 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony ...

  9. 2019寒假训练营寒假作业(三) MOOC的网络空间安全概论笔记部分

    目录 第五章 网络攻防技术 5.1:网络信息收集技术--网络踩点 信息收集的必要性及内容 网络信息收集技术 网络踩点(Footprinting) 网络踩点常用手段 5.2:网络信息收集技术 --网络扫 ...

随机推荐

  1. Code First 延迟装入特性

    使用ORM框架,基本上都会添加“延迟装入”的特性支持,当使用Entity Framwork 的objectContext与DbContext操作数据时,默认都使用“延迟装入”,也就是当我们在应用程序里 ...

  2. SpringMVC架构实现原理

    SpringMVC架构实现原理 一.SpringMVC介绍 Spring mvc是一个基于mvc的web框架.其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Ser ...

  3. context和getApplicationContext()的区别

    在android中常常会遇到与context有关的内容 浅论一下 context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder ...

  4. php开发面试题---php 对swoole的理解

    php开发面试题---php 对swoole的理解 一.总结 一句话总结: 以战养学,实例驱动 swoole是披着PHP外衣的C程序:其实就是c.java那些语言里面的高阶功能:比如 持久连接.异步通 ...

  5. CentOS 安装MySQL5.7 源码方式安装

    MySQL rpm方式安装:https://www.cnblogs.com/deverz/p/9560403.html 1.卸载已经安装的MySQL yum list installed mysqlr ...

  6. Let’s Encrypt Wildcard 免费泛域名SSL证书获取安装

    2018 年 1 月Let’s Encrypt CA 宣布免费提供通配符证书(Wildcard certificate).通配符证书是一种可被多个子域使用的公钥证书.这意味着,单个证书可用于提供多台服 ...

  7. QMUI android 框架 git下载项目运行报错解决 input String“”

    1.编译源码,input String“” 解决办法: 打开qmuidemo里面的gradle文件,注释掉顶部的 //def cmd = 'git rev-list HEAD --count'//de ...

  8. ng -v 不是内部或外部命令

    输入 npm install -g @angular/cli ng new my-app 提示ng -v 不是内部或外部命令 解决方法 1.安装过程中是否出错 原因可能是npm install -g  ...

  9. js实现图片预览、压缩、上传

    先看几个对象:Blob.ArrayBuffer.File.fileReader.formData 详细解释请参考:https://www.cnblogs.com/youhong/p/10875190. ...

  10. elementui表格表头合并

    第一步:用多级表头,该删删 该减减 第二步:使用header-cell-style属性