字典树。 比较经典的题目了。把每一个数字都插入到字典树中,询问的时候如果$x$的第$i$位是$p$,那么尝试着在字典树上往$pXOR1$的节点走下去,没有$pXOR1$节点的话再走$p$的。删除操作的话可以记录一下每一个节点出现了几次,$Insert$的时候$s[p].cnt++$,$Delete$ ...
分类:
其他好文 时间:
2016-08-26 10:31:16
阅读次数:
129
LeetCode 208 Implement Trie (Prefix Tree)...
分类:
其他好文 时间:
2016-08-24 11:23:33
阅读次数:
146
3439: Kpm的MC密码 Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的。。。),于是乎,他现在理所当然地忘记了密码,只能来解答那些神奇的身份验证问题了。。。 描述 Kpm当年设下的问题是这样的: 现在定义这么 ...
分类:
其他好文 时间:
2016-08-24 11:15:51
阅读次数:
229
题目:给定一个长度为40的数字,问其是否在前100000项fibonacci数的前缀 因为是前缀,容易想到字典树,同时因为数字的长度只有40,所以我们只要把fib数的前40位加入字典树即可。这里主要讨论下怎么得到fib数的前40位。 首先,因为没可能每一项的fib都求出来的了。空间都存不下来。所以, ...
分类:
其他好文 时间:
2016-08-23 23:19:38
阅读次数:
199
Implement a trie with insert, search, and startsWith methods. Note: You may assume that all inputs are consist of lowercase letters a-z. Solution: ...
分类:
其他好文 时间:
2016-08-22 09:30:22
阅读次数:
207
dp,字典树。 dp递推式很容易知道。dp[i]=max{dp[j]+1} a[j]^..^a[i]<=X,并且[j,i]长度不能超过L。 但是暴力来复杂度极高,所以需要用字典树维护这个东西。将前缀异或和插入到字典树中,然后不断维护a[i]位置之前L个前缀异或和就好了。 跑了405ms,第一次排到第 ...
分类:
其他好文 时间:
2016-08-20 11:42:45
阅读次数:
173
题目:给定一个单词本,要求找出其中的单词,是单词本中某两个单词合并起来得。 思路。先把单词本用字典树保存,然后枚举没个单词的切点,把一个单词分成两部分,去字典树中找即可。 #include <cstdio> #include <cstdlib> #include <cstring> #include ...
分类:
其他好文 时间:
2016-08-20 01:26:38
阅读次数:
127
这个对数字建二进制trie,然后启发式合并,最重要的是Push_up()操作和Merge()操作,解决了复杂度的问题。 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 co ...
分类:
其他好文 时间:
2016-08-19 15:04:52
阅读次数:
399
字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组 2009-09-25 00:00:40| 分类: 算法与acm|举报|字号 订阅 字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组 2009-09-25 00:00:40 ...
分类:
编程语言 时间:
2016-08-19 12:39:25
阅读次数:
1348
简介
后缀三姐妹:后缀数组,后缀自动机,后缀树。
后缀自动机:Suffix Automation,也叫SAM。
创立算法的思路来源:能不能构出一个自动机(本质就是一个有向图),能识别一个串的所有后缀。
识别所有后缀基础想法
把所有的后缀都放进一个trie里面,比如串aabbabd。
这样的状态太多了,怎么把状态数缩小。
减小状态数的方法
定义一个子串的right集合为这...
分类:
其他好文 时间:
2016-08-19 08:37:43
阅读次数:
554