常规做法是枚举每个字符串每个位置,时间复杂度O(n*len*len),(建字典树O(n*len))。然而我看这题第一眼想的是时间复杂度O(n*len)的算法。。就是建正反两棵字典树,每个字符串跑分别跑正反一遍字典树,再看看正反跑的结果能不能拼成原串。然而常数太大了点,并没什么卵用。。 1 #incl...
分类:
其他好文 时间:
2016-01-26 21:36:10
阅读次数:
259
可持久化trie处理抑或和最大值用trie树从上往下贪心的思想查询区间抑或最大值后缀抑或上整体转成维护前缀,方便处理修改题目代码#include#include#include#includeusing namespace std;#define maxn 600020struct node{ in...
分类:
其他好文 时间:
2016-01-10 22:48:14
阅读次数:
252
常用的方法:Hash法、Bit-map法、Trie树、堆TOP K 问题:分治+Trie树/hash+小顶堆重复问题:位图法排序问题:分治法/位图法还不是很理解
分类:
其他好文 时间:
2015-12-31 22:45:43
阅读次数:
160
因为要求异或和最大,所以可以考虑从高位开始,向低位枚举尽可能接近~x的值,所以以二进制位为关键字,建立可持久化trie树,根据异或和的性质,XOR_SUM{i,j}=XOR_SUM{1,j} xor XOR_SUM{1,i-1},所以查询问题也可以解决了。 1 #include 2 #includ....
分类:
其他好文 时间:
2015-12-31 07:11:06
阅读次数:
577
题目链接给n个数, 让你找出一个前缀和一个后缀, 它们异或完以后最大, 前缀和后缀都是异或得来的, 可以为空, 为空时按0算。前缀后缀不可覆盖。这题好神, 竟然是Trie树...首先将所有数的异或算出来作为初始的后缀, 初始前缀为0。 然后往字典树里插入前缀, 在对后缀进行查找, 查找时, 从高位往...
分类:
其他好文 时间:
2015-12-28 21:57:06
阅读次数:
177
fail树上建可持久化树。根据原题中给定的输入跑就可以跑出一颗trie树,然后对这个trie数建fail树。我最开始的思路错了:A串在B串中出现的次数就是看B中有多少节点可以直接或者说间接的指向A的子树。举个反例:A = aaa,设A的子树是一个点为b,B = aaab,那么B将会有两个指针指向A的...
分类:
其他好文 时间:
2015-12-28 11:54:36
阅读次数:
173
trie这种树也被称为线索,搜索树。正如图以下是用stl 的map来实现class trie_item_c{public: trie_item_c(){} trie_item_c(const char nm) { name = nm; } void set_name(const char nm).....
分类:
其他好文 时间:
2015-12-15 14:18:46
阅读次数:
86
http://acm.hdu.edu.cn/showproblem.php?pid=2222一个AC自动机的模板题。用的kuangbin的模板,静态建Trie树。可能遇到MLE的情况要转动态建树。AC自动机的讲解看这里http://blog.csdn.net/niushuai666/article/...
分类:
其他好文 时间:
2015-12-11 01:27:57
阅读次数:
149
1.Hash树理想的情况是希望不经过任何比较,一次存取便能得到所查的记录,
那就必须在记的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和一个唯一的存储位置相对应。因而在查找时,只要根据这个对应关系f找到
给定值K的像f(K)。由此,不需要进行比较便可直接..
分类:
其他好文 时间:
2015-12-06 17:50:42
阅读次数:
281
暴力部分: 这个题一开始的想法是 n^2 枚举两个点,然后logn维护LCA,在倍增的同时维护异或值和 k 的个数。 s_z_l老爷指导了新的思路,既然这个树只有n^2个LCA,那么枚举LCA,同时向下深搜即可。标算: 首先点分治,尽力保证树的平衡,然后按照Trie树的性质,贪心,至于k,我们...
分类:
其他好文 时间:
2015-12-04 14:22:12
阅读次数:
230