
Trie树
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
HDU 2222 Keywords Search AC自动机模板题
题目大意:给定一些单词和一个字符串,求有多少单词在字符串中出现过首先我不想吐槽题号。真的不想。真的不想!!别问我为什么说这句话!!不想就是了!!AC自动机模板题简单介绍一下AC自动机首先不要把这东西和自动AC机弄混 自动AC机算法等我们发明之后再加介绍这东西的实现方法就是把所有单词插入一棵Trie树 然后在Trie树上跑KMP算法每个节点有一个next指针 和KMP算法原创 2014-09-15 13:52:47 · 1829 阅读 · 0 评论 -
BZOJ 3689 异或之 Trie树+堆
题目大意:给定n个数,求这n个数两两异或的值中的前k小首先我们对所有数字建立二进制Trie树,可以利用Trie树上的size域查询出一个数与其它数异或值的第k小然后我们维护一个堆,将所有数与其它异或值的第2小加入堆(第一小是自己异或自己,不在题目要求范围内),当取出一个数异或值的第k小后,将第k+1小加入堆一个异或值会被两个数分别取出一次,所以取出奇数次时输出,取2*k次即可时间复原创 2014-10-11 13:26:17 · 3160 阅读 · 0 评论 -
BZOJ 3439 Kpm的MC密码 Trie树+可持久化线段树
题目大意:给定n个字符串,对于每个字符串求以这个字符串为后缀的字符串中第k小的编号首先将字符串反转 那么就变成了对于每个字符串求以这个字符串为前缀的字符串中第k小的编号然后考虑对字符串排序 那么对于每个字符串以它为前缀的字符串一定是连续的 那么就转化成了区间第k小 这个用可持久化线段树可以解决排序自然不能直接排 既然是字符串 考虑Trie树+DFS即可 注意字符串有重复的 小心#i原创 2014-11-17 12:52:26 · 2244 阅读 · 0 评论 -
BZOJ 1212 HNOI2004 L语言 AC自动机(Trie树)+动态规划
题目大意:给定一个单词表和m个字符串 问每个字符串的最长的前缀,满足这个前缀可以拆分成一些字符串 使这些字符串都在单词表中出现过再也不敢看错数据范围了……一道明明用Trie树能解决的问题居然被我写了AC自动机……将单词表中的单词全都插入AC自动机 每个单词所在的节点记录这个单词的长度然后对于每个字符串 用f[i]表示长度为i的前缀是否能拆分成单词表中的单词 跑AC自动机对于每个匹配原创 2014-11-18 20:48:33 · 2727 阅读 · 0 评论 -
BZOJ 3217 ALOEXT 替罪羊树套Trie树
题目大意:维护一个序列,支持以下操作:1.在某个位置插入一个数2.删除某个位置上的数3.修改某个位置上的数4.求某段区间中的次大值与区间中另一个数的异或值的最大值强制在线替罪羊树套Trie树。。。终于尼玛A了。。。7.4KB的大代码啊- -插入和修改同带插入区间k小值 删除要打标记不能直接删删除的时候注意 删除导致的不平衡不要重建 否则复杂度无法保证因此每个节点原创 2014-12-29 13:26:06 · 2632 阅读 · 0 评论 -
BZOJ 4103~4105 THUSC2015 题解
T1:BZOJ 4013 xor 题目大意:给定一个长度为nn的数列aa和一个长度为mm的数列bb,给定矩阵AA,令Ai,j=ai⊕bjA_{i,j}=a_i\oplus b_j,qq次询问某个子矩形里的kk大值 n≤1000,m≤3∗105,q≤500n\leq 1000,m\leq 3*10^5,q\leq 500刚看到这题的时候我发现我不会,看到数据范围的时候我发现出题人也不会…… 如果原创 2015-06-03 17:55:51 · 4086 阅读 · 2 评论 -
BZOJ 4260 Codechef REBXOR 可持久化Trie树
题目大意:给定一个长度为nn的序列,求1≤l1≤r1<l2≤r2≤n1\leq l_1\leq r_1<l_2\leq r_2\leq n使得(⊕r1i=l1ai)+(⊕r2i=l2ai)(\oplus_{i=l_1}^{r_1}a_i)+(\oplus_{i=l_2}^{r_2}a_i)最大,输出这个最大值傻逼题…… 求前缀和,问题转化成了求0≤l1<r1≤l2<r2≤n0\leq l_1< r原创 2015-09-22 17:08:18 · 2351 阅读 · 0 评论 -
BZOJ 4779 Usaco2017 Open Bovine Genomics Trie树
题目大意:给定nn个A串和nn个B串,长度均为mm,求一个最短的区间[l,r][l,r],使得不存在一个A串aa和一个B串bb,使得a[l,r]=b[l,r]a[l,r]=b[l,r] n,m≤500n,m\leq500枚举区间左端点,然后Trie树直接模拟就行了#include <cstdio>#include <cstring>#include <iostream>#include <a原创 2017-03-24 16:00:33 · 1400 阅读 · 0 评论 -
BZOJ 4896 Thu Summer Camp2016 补退选 Trie树
心情不好跑来刷水题……题目大意:给定一个字符串集,支持插入、删除、查询某个前缀的出现次数最早何时超过给定的值开个Trie树维护字符串 直接每个节点开个vector记录一下超过0,1,2,...0,1,2,...时分别是第几次操作就行了坑点: 1.超过是指大于 2.题目中的“输入中的所有字符串只会包含前1010个小写字母”是在放屁…… 3.a∗|ANS|+ba*|ANS|+b会爆int#inc原创 2017-05-19 20:27:49 · 2236 阅读 · 3 评论