字典树
hesorchen
这个作者很懒,什么都没留下…
展开
-
HDU4825_01字典树
01字典树是普通字典树的一种变形,主要用来处理两个数的最大异或值问题 现在可以先自己想想怎么把普通字典树变形成01字典树 普通字典树存储的字符,例如26个字母的字典树是26叉树,01字典树存储的是01,显然是二叉树 一颗存储int型的01字典树最多有32层(其中第一层类似于普通字典树是根结点,不存储任何内容) 01字典树其实就是将整型数据转换为二进制,数的叶节点存储着二进制的最低位,越靠近根节点,存储的位数越高。 解决最大异或,那么就贪心的找对应位不同的分支即可 例题 HDU4825 给你n个数,再给出原创 2020-07-21 18:04:37 · 5326 阅读 · 0 评论 -
字典树(HDU1251,1247)
例题 HDU1251统计难题 给你若干个单词,再给出若干次询问,每次询问给出一个字符串,让你求出以这个字符串为前缀的单词总共有多少个 先把所有单词建树,建的过程中顺便把所有前缀数量(也就是结点使用次数)统计出来,查询复杂度为O(len)。 AC代码: int trie[1000010][26]; int ct = 1; //总结点数 int ans[1000010]; //统计每个节点的前缀数量 void Insert(string a) { int p = 0; for (原创 2020-07-21 16:43:08 · 5263 阅读 · 0 评论