HDU1671 Phone List】的更多相关文章

#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cstdlib> using namespace std; template<int Size> struct trie_node{ bool terminable; //表示节点为字符串的结尾 int node; //子节点的个数 trie_node *child[Size]…
HDU1251:http://acm.hdu.edu.cn/showproblem.php?pid=1251 题目大意:求得以该字符串为前缀的数目,注意输入格式就行了. #include<stdio.h> #include<string.h> ]; * ][], cnt; * ]; void insert() { int len = strlen(str); ; ; i < len; i ++) { int id = str[i] - 'a'; if(!trie[rt][id…
题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceeded: 前缀树是很费空间的数据结构,每个节点存放了字母(数字)个数个指针,正所谓用空间来换取时间. 我发现我忘记写析构函数了,所以测例多起来还不释放很容易超空间. 树形结构的析构也很有趣: ~Node() { ; i < ; ++i) { if (children[i]) { delete chil…
Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 18421    Accepted Submission(s): 6207 Problem Description Given a list of phone numbers, determine if it is consistent in the sense tha…
Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10837    Accepted Submission(s): 3735 Problem Description Given a list of phone numbers, determine if it is consistent in the sense tha…
题目大意 给定一些电话号码,判断是否有电话号码是其他电话号码的前缀 题解 裸Trie树嘛~~~~只需要一个插入过程即可,假设X是Y的前缀,在插入的过程中有两种情况,X在Y之前插入,那么在插入Y的时候经过了X的尾结点,插入的过程中判断下即可,还有一种情况就是X在Y之后插入,那么插入X的时候肯定不需要插入新结点~~~也记录一下即可~~~~~被坑了好多次,先是没有考虑第二种情况,改了之后RE,然后脑残的发现把数字字符转换为数字的时候是-'a'-改完就AC了... 代码: #include <iostr…
Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7343    Accepted Submission(s): 2525 Problem Description Given a list of phone numbers, determine if it is consistent in the sense tha…
Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let’s say the phone…
字典树的包含与不包含关系 #include<bits/stdc++.h> using namespace std; ][]; ]; ; bool insert1( char *word ) { ; ;i<strlen(word);i++) { '; ) trie[root][ ch ]=++pos; &&root!=)return false; sum[root]=; root=trie[root][ch]; } ) sum[root]=; else return fal…
#include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> #include<algorithm> using namespace std; ][],n,cnt; ]; ]; bool flag; void _insert() { ),tmp=; ;i<L;i++){ ']=++cnt; tmp=trie[tmp][c[i]-']; if(f[tmp]) f…
Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12684    Accepted Submission(s): 4307 Problem Description Given a list of phone numbers, determine if it is consistent in the sense tha…
Phone List POJ动态建树TLE了~~~ 题意:拨打某个电话时可能会因为和其他电话号码的前几位重复而导致错误,现在给出一张电话单,求是否有某个电话是其他电话的前缀.是则输出NO,否则输出YES. 思路:字典树模板题了,但有一个动态建树每次都要清空内存这个很重要,很容易导致MLE了.这个题插入和查找可以放在一起,这便是字典树的强大之处. struct Tree { bool f; Tree *next[N]; }; int insert(Tree *root,char *s) { int…
传送门 Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11633    Accepted Submission(s): 3965 Problem Description Given a list of phone numbers, determine if it is consistent in the sense…
模板题...不过会爆内存,要小心 #include <iostream> #include <cstdio> #include <string.h> #pragma warning ( disable : 4996 ) using namespace std; const int inf = 0x3f3f3f3f; ; ]; bool flag; struct node { bool end; node* next[maxn]; node() { end = false…
题意:       给你一堆电话号,问你这些电话号后面有没有相互冲突的,冲突的条件是当前这个电话号是另一个电话号的前缀,比如有 123456789 123,那么这两个电话号就冲突了,直接输出NO. 思路:         说白了就是前缀匹配,也就是以当前字符串为前缀的字符串有几个,只要有一个或者更多那么就直接NO了,快速的判断前缀的问题我们可以直接字典树记录前缀,先把所有的字符串都存在字典里,然后在枚举每一个,只要有一个是前缀(不算自己)那么就直接NO了,这里要注意一点,每次都要把Tree的内存…
什么叫Trie树? Trie树即字典树. 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高. (以上来自百度百科,点这里) 在我看来,Trie树是一棵26叉树(如果是统计字母的话),典型的空间换时间.那到底我们利用Trie来做什么呢? 1.统计单词 2.匹配前缀 千篇一律地需要提到…
POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 POJ1016 POJ1017 POJ1169 POJ1298 POJ1326 POJ1350 POJ1363 POJ1676 POJ1786 POJ1791 POJ1835 POJ1970 POJ2317 POJ2325 POJ2390 POJ1012 POJ1082 POJ1099 POJ1114…
hihoCoder 1014 题目提示已经很清楚了~ 贴代码…… #include <iostream> #include <cstdio> #include <cstring> using namespace std; + ; ; struct Node{ int cnt; int next[alNum]; void init(){ memset(next,-,sizeof(next)); cnt = ; return; } }; Node trie[MAXN]; i…
题目链接:https://vjudge.net/problem/HDU-1671 题意:给定n个字符串,判断是否存在一些字符串是另一些字符串的前缀. 思路: 套模板,存在前缀可能是两种情况: 当前字符串枚举位数时已经存在之前的字符串了;(即已经存在911,当前插入9112)   或者当前字符串枚举完之后,该结点还有子结点.(即已经存在9112,当前插入911) AC code: #include<cstdio> #include<algorithm> #include<cst…