![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串 -------- 字典树
SolarDomo
每天都被头像萌醒
展开
-
HDU 1671 字典树 查找前缀
题目链接题意: 若干个电话号码 是否存在某个号码是另一个号码的前缀将每一个号码都加入一颗字典树中 此时如果这个号码是某个号码的前缀或者某个号码是它的前缀 那么 第一种情况下此号码的节点在某个号码的路径上 第二种情况 在这个号码的路径上存在号码节点#include <cstdio>#include <iostream>#include <cstring>using namespace s原创 2016-08-05 13:21:16 · 337 阅读 · 0 评论 -
01字典树 小结
为了做13年南京网络赛的一道题 学了这个01字典树 看了别人的模板 之后切了几道水题 现在总结一下01字典树的实现可以看成是把一个数的二进制字符化后插入到一颗一般的字典树中比如在01字典树种插入3时 相当于在字典树中插入00 …..00011(一共33为,这个根据具体实现不同)查找最大异或值的时候我们是从最高位 向下贪心查找 贪心策略为:当前查找第k位 二进制数位IDX 如果存在IDX ^原创 2016-08-10 10:15:07 · 3624 阅读 · 2 评论 -
POJ 3764 The xor-longest Path 01字典树 邻接表
题目链接:http://poj.org/problem?id=3764题意: 求树上路径边异或和最大值思路和上一篇一样 只是这个POJ 超内存一直wa也不提示 后来把vector改成 数组模拟之后就过了代码:#include <cstdio>#include <iostream>#include <queue>#include <cstring>#define sf scanf#def原创 2016-08-10 07:14:51 · 411 阅读 · 0 评论 -
BZOJ 4206 Codechef REBXOR 01字典树
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4260题意: 数组中求 不相交两个区间 两个区间异或和相加最大值代码:#include <cstdio>#include <iostream>#include <queue>#include <cstring>#define sf scanf#define pf printfus原创 2016-08-10 06:29:25 · 361 阅读 · 0 评论 -
HDU 5536 Chip Factory 01字典树
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536题意:数组中求 i,j,k 最大的(A[i] + A[j]) xor A[k] i != j != k n^2枚举i,j 同时删除字典树中的A[i] A[j] 之后询问A[i] + A[j] 的最大的A[k] 维护最大异或和代码:#include <cstdio>#include <iost原创 2016-08-10 06:09:16 · 938 阅读 · 0 评论 -
HDU 4825 Xor Sum 01字典树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825题意:找出集合中与X异或的最大值01字典树模板题代码:#include <cstdio>#include <iostream>#include <queue>#include <cstring>#define sf scanf#define pf printfusing namespac原创 2016-08-10 06:02:10 · 640 阅读 · 0 评论 -
POJ 3080 Blue Jeans 字典树
题目链接题意:给N个文本串 找到在一个在N个文本串中都出现的最长的字典序最小的字串本来找的是KMP 的题 想来半天都不知道怎么用KMP搞 之后发现可以 将每个串的后缀都加入一颗字典树中 字典树中每个节点的value表示一个状态 即 这个串在哪几个序列中出现过 最后在树上深搜 按A C G T 的顺序搜索 最后在逆这树向上打印文本时间复杂度: 一个串有len个后缀 将一个长度为n的串加入原创 2016-08-08 15:08:35 · 258 阅读 · 0 评论 -
HDU 1075 字典树 树搜索 逆路径输出单词
题目链接题意: 给出一个字典 和 文章 根据字典翻译文章 字典中没有的词不用翻译 标点不用翻译将字典中的所有单词都Insert进一颗字典树中 MAR单词的节点的Eng指针指向它对应的ENGLISH单词节点 所有Eng指针为NULL的不是MAR单词 找到对应的ENGLISH单词节点之后 又pre指针向上直到root 沿途将字母存入temp数组中最后将数组逆序代码:#include <cstdio>原创 2016-08-05 13:09:17 · 532 阅读 · 0 评论 -
HDU 1251 字典树 前缀计数
题目链接加入单词时 路径上每个点得count值都加一 查询直接输出 单词节点的count值#include <cstdio>#include <cstring>#define sf scanf#define pf printfusing namespace std;struct Trie_node{ int count; struct Trie_node* next[26原创 2016-08-05 13:13:05 · 249 阅读 · 0 评论 -
字典树模板
测试题:struct Trie{ /** * maxnode: Trie树中最多可能的节点个数 上限为字符串个数 * 最长长度 * sigma_size: 组成字符串的字符种类 * ch: 边 * value: 节点的值 * sz: Trie树的总节点个数 */ int原创 2016-09-26 17:49:23 · 235 阅读 · 0 评论