poj3630 Phone List】的更多相关文章

题目链接 题目大意 看输入的每个字符串中是否有一个字符串是另一个字符串的前缀 #include<iostream> #include<cstring> #include<algorithm> #include<string.h> #include<stdio.h> using namespace std; #define maxn 10001 string b[maxn]; ; struct ac{ ]; void init(){ sum=;fa…
题目来源:http://poj.org/problem?id=1056   http://poj.org/problem?id=3630 两题非常类似,所以在这里一并做了. 1056题目大意: 如果一组编码中不存在一个编码是另一个编码的前缀的情况,我们就称这组编码是“可立即解码的”(immediately decodable).我们假定编码都是二进制的,一组编码中没有相同的码.每个编码长度都不超过10,每组编码数目都在2到8之间. 比如,一组二进制编码:{A, B, C, D},其中:A: 01…
Phone List POJ动态建树TLE了~~~ 题意:拨打某个电话时可能会因为和其他电话号码的前几位重复而导致错误,现在给出一张电话单,求是否有某个电话是其他电话的前缀.是则输出NO,否则输出YES. 思路:字典树模板题了,但有一个动态建树每次都要清空内存这个很重要,很容易导致MLE了.这个题插入和查找可以放在一起,这便是字典树的强大之处. struct Tree { bool f; Tree *next[N]; }; int insert(Tree *root,char *s) { int…
Phone List POJ-3630 字典树 or 暴力 题意 目前有 t 组数据, n 个电话号码,如果拨打号码的时候 先拨通了某个号码,那么这一串号码就无法全部拨通. 举个例子 911 和 9112016652 相比 后者就无法被拨通,因为 911 会先被拨通. 如果都可拨通 输出 YES 不然输出 NO. 解题思路 这里我是对insert函数进行了修改,在插入的过程中进行判断. 具体过程是这样的,flag数组记录两个信息,一是以这个结点结尾是不是一个完整的字符串,如果是那么就赋值为1,如…
这又是两道一样的题,都是建立trie树的过程. HihoCoder第二周: 这里其实逻辑都很简单,主要在于数据结构struct的使用. #include <iostream> #include <cstring> using namespace std; struct node{ int get; node *branch[26]; }; node* create() { node* tnew = (node *)malloc(sizeof(node)); tnew->get…
传送门 题意:输入n串数字 找出是否有存在串的前缀与另一个串相同 如果存在 输出NO否则输出YES 思路:用字典树解决 标记字典树总串的结尾 查找出一个串内部是否有被标记的节点 如果有那么说明存在前缀相同的串 在插入字典树的时候判断是否存在 cin poj tle了 还是换成gets才过... AC代码: #include "iostream" #include "stdio.h" #include "string.h" using namesp…
这个题的意思是说,给出一些字符串,判断是否有字符串是另一个字符串的前缀,当然可以用排序水过,不过这个题拿来练习一下Trie树不错. 这个题在poj的discuss上好多人说必须要静态建树,估计都是用了指针实现的..不过竞赛中最好不要用指针,所以这里用了刘汝佳大神的数组实现方法,其实Trie树最重要的是每个节点的sz值,以及val值,ch[][]数组只是作为index来查询有没有这个字符,所以用数组实现时,把ch[][]数组定义在main外面,多case的话每个case定义一个Trie就好了...…
题意 trie字典树模板 LOJ有中文翻译https://loj.ac/problem/10049 思路 TIRE 代码 之前在LOJ上做过 直接交了 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<map> #include<queue> #include<stack> #include<cstring…
Tire树裸题,一开始写动态的字典树,然后TLE,每次new一个新节点耗费时间较多.后来改成数组模拟的. //#include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <algorithm> using namespace std ; ; struct stringStruct { ] ; int len ; }ss[ maxN ] ; struct tireNode { i…
spy on一下,发现是trie裸题,结果一交就T... 然后把cin改成scanf就A了... trie的空间一定要开足,要不然RE #include <cstdio> #include <string> #include <iostream> #include <cstring> using namespace std;; ; ]; // poj 3630 Phone List struct Trie { ]; int top; bool ed[N];…