数据结构-Trie
文章平均质量分 57
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
hdu1671(Tire-Tree)
思路:建立一个字典树,然后对路径上的结定做一个标记,方便后面再次遍历寻找的时候判断前缀。 /***************************************** Author :Crazy_AC(JamesQi) Time :2015 File Name : *****************************************/ // #p原创 2015-10-01 20:14:28 · 322 阅读 · 0 评论 -
lightoj1224 DNA Prefix
题意:给定n个字符串,求拥有前缀a[0…l]的字符串个数x乘上这个字符串长度,求这个最大值。思路:建立棵字典树,每个节点纪录上经过这个节点的字符串个数,然后dfs求解。struct node { int cnt; node* nxt[4]; node() { for (int i = 0;i < 4;++i) nxt[i] = NULL原创 2016-05-12 16:35:16 · 432 阅读 · 0 评论 -
poj 1816Wild Words(字典树+dfs)
这题建立字典树然后搜索还是挺容易想到的,对?和*特别处理,主要是*不是很好处理。 因为?可以代表人意字符,而*是代表一个串。 其实每次判断*存在之后就枚举*中压缩字符串的长度就好了。 /***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Name :原创 2016-03-22 18:26:39 · 424 阅读 · 0 评论 -
hdu1251统计难题
只想说句空间被狗日了。。。。。 /***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Name : *****************************************/ // #pragma comment(linker, "/STACK原创 2016-02-25 21:35:15 · 359 阅读 · 0 评论 -
hdu1247Hat’s Words
先对把每个单词都放到字典树中去,然后就是对每个单词进行切割,判断是否两部分都在字典树中。 /***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Name : *****************************************/ // #p原创 2016-02-25 20:45:42 · 329 阅读 · 0 评论 -
hdu 1800 Flying to the Mars(字典树统计)
此题很明显的一个谈心就是找重复的数最多的那个出现的次数就是答案,但是因为有前导0的存在,所以还得先处理下再插入到字典树中去。 其实如果数据小的话还可以用map进行hash。 /***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Name : *****原创 2016-03-20 23:58:24 · 364 阅读 · 0 评论 -
poj2418(Hardwood Species)
思路:建立Tire树,dfs一遍,再del下。 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2015-11-02 22:41:37 · 385 阅读 · 0 评论 -
uva1462(Fuzzy Google Suggest)
思路:建立字典树,然后dfs序列。 这题的主要难度在于怎么dfs计数的问题,字典树就是次要的难度。如何表示是不变,增加,删除这三种状态? 我们可以用一个指示性的指针来指向序列,用x来表示目前还可以增加删除的次数和。然后对于通过某种不变删除增加的组合形式最后到达的末节点表示为2,中间经过的节点表示为1。最后要注意的就是对于当前字符串搜索完之后要把vis数组清空。 // #pragma comm原创 2015-10-30 01:19:13 · 380 阅读 · 0 评论 -
hdu2222(Keywords Search)
思路:题目中有若干个模式川和一个主串,问在主串中出现了几种模式串。显然就是模式串构成AC_Tree(),然后再去匹配主串。 因为new 了空间的,所以最后要delete释放。 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #原创 2015-10-28 14:20:43 · 408 阅读 · 0 评论 -
poj2531(trie + 欧拉路径判定)
思路:这问题显然是要判断欧拉路径的存在,然后要把串看成一个点,然后统计串的种类(trie树),最后就是并查集来判断连通性 + 度的判断(无向图的欧拉路径 == 度为奇数的点的个数要么为0,要么为2,不然不存在欧拉路径,这个是一个充要条件) 点击题目链接 /***************************************** Author :Crazy_AC(Jame原创 2015-09-23 21:37:06 · 435 阅读 · 0 评论 -
poj2418
思路:建立字典树,dfs查找,然后输出频率。 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #include #includ原创 2015-11-04 22:08:22 · 397 阅读 · 0 评论 -
poj3764 The xor-longest Path
题目链接题目大意:一棵树上每条边有个值,求在树中找一条路径使得路径上的边的权值的抑或和最大。 分析:A^A^B = B;对于每个点,我们先求出它到根节点的抑或和,然后插入到01字典树中去,并且把这些值存到容器中,因为每个值都对应图中的一个节点。 最后在枚举就好了。 const int maxn = 1e5 + 10; int head[maxn], nxt[maxn<<1], pnt[maxn<<1原创 2016-05-22 15:28:42 · 390 阅读 · 0 评论