挺水的一道题。 题面传送门 题目大意:每个询问给出b,x,l,r,求[l~r]区间内b xor (x+a[i]) (l<=i<=r) 的最大值。 秒想到trie树上贪心? 好像还有加法啊,直接套可持久化trie树行不通,怎么玩呢。 假设目前处理到第j位,b转成二进制后第j位为1来考虑。设我们目前找到 ...
分类:
其他好文 时间:
2018-07-29 10:14:26
阅读次数:
168
摘自大佬博客 https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html 给出n个单词和m个询问1.查询某个前缀是否出现过2.查询某个单词是否出现过3.查询前缀出现的次数 例如:cat,cash,app,apple,aply,ok 建一颗字典树 这 ...
分类:
其他好文 时间:
2018-07-28 18:57:43
阅读次数:
137
一、构建步骤 1.将所有模式串构建成 Trie 树 2.对 Trie 上所有节点构建前缀指针(类似kmp中的next数组) 3.利用前缀指针对主串进行匹配 AC自动机关键点一:trie字典树的构建过程 字典树的构建过程是这样的,当要插入许多单词的时候,我们要从前往后遍历整个字符串, 当我们发现当前要 ...
分类:
其他好文 时间:
2018-07-25 16:21:19
阅读次数:
204
AC自动机入门 我学的时候看的是 "yyb的博客" 讲之前的bb 算法基础 1.KMP字符串匹配 2.trie树 要求入门并能有一定技巧地运用 由来 (匹配泛指各种字符串之间相互包含,交集等问题) 我们学习了KMP,是用来 2 个字符串匹配的算法:O(m+n) 现在给出很多个字符串,去把他们和另外一 ...
分类:
其他好文 时间:
2018-07-25 14:30:13
阅读次数:
176
1、概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。 我理解字典树是看了这位大佬博客。还不了解字典树的可以先进去学习一下 https://www.cnblogs.com/TheRoadToTheGold ...
分类:
其他好文 时间:
2018-07-20 12:25:54
阅读次数:
233
据说这些并不对劲的内容是《信息学奥赛一本通提高篇》的配套练习。 并不会讲Trie树。 1.poj1056-> 模板题。 2.bzoj1212-> 设dp[i]表示T长度为i的前缀能否被理解。这样,对于所有满足T[(x+1)...i]是一个字典中的单词的x,dp[i]|=dp[x]。 所以,就可以将所 ...
分类:
其他好文 时间:
2018-07-18 16:58:33
阅读次数:
179
//AC自动机 //相当于在Trie树上求KMP //可以求一个字符串的多个匹配子串 #include #include #include #include #include #include #include using namespace std; struct uio{ int son[27]... ...
分类:
其他好文 时间:
2018-07-17 19:52:46
阅读次数:
170
1、引言 DoubleArrayTrieTree是使用双数组来保存状态节点和状态转移条件 2、实现 状态节点: t保存节点的有效值,base为节点的状态转移基数 声明字段: 构造函数: 数组状态变化: 只有根节点,检查数组checks为空 字符串插入: states数组既要保存数字,也需要保存状态转 ...
分类:
其他好文 时间:
2018-07-15 23:20:09
阅读次数:
195
1、引言 TripleArrayTrieTree是使用三数组来保存trie树的状态节点和转移条件。 2、实现 状态节点: 其中t保存着有效值,base保存着该状态节点的转移基数 声明字段: 其中states中保存着状态节点,next中保存着转移条件,check中用来检测转移的下一个节点是否已经被使用 ...
分类:
其他好文 时间:
2018-07-15 23:13:54
阅读次数:
163
1、引言 TableBaseTrieTree是基于二维数组表的数据结构来存储树的状态节点和转移条件。 2、实现 状态节点: 其中t为状态节点中的有效信息,next中保存着该状态节点向下一个状态节点的转移条件 声明字段: states中顺序保存着所有的状态节点 构造函数: 初始化root状态节点并加入 ...
分类:
其他好文 时间:
2018-07-15 23:13:46
阅读次数:
221