POJ 3630 Phone List
2015-12-20 09:14
435 查看
Trie树。
题意是问某个数字可不可能是其它数字的前缀。
就是裸的字典树。排序然后插进去就好了。
题意是问某个数字可不可能是其它数字的前缀。
就是裸的字典树。排序然后插进去就好了。
#include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<map> #include<stack> #include<iostream> #include<list> #include<set> #include<cmath> #define INF 0x7fffffff #define eps 1e-6 #define LL long long using namespace std; struct Trie { int word[100001][10]; int sz,cot; int ex[1000010]; void intTrie() { sz=1; cot=1; memset(word[0],0,sizeof(word[0])); ex[0]=0; } int insert(char *s) { int u=0,c,len=strlen(s); int ans=0; for(int i=0; i<len; i++) { c=s[i]-'0'; if(!word[u][c]) { memset(word[sz],0,sizeof(word[sz])); ex[sz]=0; word[u][c]=sz++; } u=word[u][c]; ans+=ex[u]; } if(ex[u]==0)ex[u]=1; return ans; } }wo; struct lx { char str[11]; }l[10001]; bool cmp(lx a,lx b) { return strcmp(a.str,b.str)<0; } int main() { int t,n; scanf("%d",&t); while(t--) { wo.intTrie(); scanf("%d",&n); bool flag=0; for(int i=0;i<n;i++) scanf("%s",l[i].str); sort(l,l+n,cmp); for(int i=0;i<n;i++) { int ans=wo.insert(l[i].str); if(ans>0) { flag=1;break; } } if(flag)puts("NO"); else puts("YES"); } }
相关文章推荐
- MySql常用函数
- DragonBoard 410c低速扩展口详解
- 原生js页面滚动延迟加载图片
- 日经春秋 20151220
- Spring,Struts2,MyBatis,Activiti,Maven,H2,Tomcat集成(二)——Struts2集成
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(五)地图切换以及图层显示模块
- Str 函数
- Hibernate get和load 原理及区别
- Hibernate3一级缓存和二级缓存的理解!
- 更改表的存储引擎
- json解析
- javascript实现的网站访问量统计代码
- 如何取消一个AsyncTask?
- js实现n秒倒计时后才可以点击的效果
- ios7上文字上半部分字体缺失
- Session中StateServer的使用方法
- SQL-while begin end
- 系统登陆界面开发及实现之(一)界面设计及布局说明
- nginx版本隐藏以及nginx访问状态
- 天声人語 20151220 築地最後の師走