trie树
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
20200725 T3 sort【区间异或,区间排序,平衡树 + trie】
题目描述长度为 nnn 的序列,0≤ai<2320\le a_i<2^{32}0≤ai<232要求支持 区间与,区间或,区间异或,区间排序。输出最终的 aaa 序列。n,m≤105n,m\le10^5n,m≤105题目分析ai<16a_i<16ai<16 的时候可以线段树维护每种数的个数,排序的时候提取每种数然后区间赋值。看似是 log3log^3log3 实际上却跑得很快,(可能有些数没有;赋值时的pushup可以小常数memset)正解:平衡树维护原创 2020-07-26 16:40:20 · 531 阅读 · 1 评论 -
LOJ#517. 「LibreOJ β Round #2」计算几何瞎暴力【全局异或、排序,区间求和】
题目描述:link题目分析:editorial空间其实超了512M,不过评测算的是使用的最大内存…Code(基本上薅的LanrTabe的代码…莫名其妙rk1??):#include<bits/stdc++.h>#define maxn 200005#define LL long longusing namespace std;int n,N,m,Xor,Rev,q[maxn],last,ch[maxn*30][2],tot;struct node{ int a[30]原创 2020-07-07 15:02:27 · 282 阅读 · 0 评论 -
LOJ#6198. 谢特【后缀自动机/数组 + Trie树查异或最大值 + Trie树合并】
题目描述:n≤105,wi<nn\le10^5,w_i<nn≤105,wi<n,LOJ题目链接题目分析:看到两个后缀的LCP就想到后缀自动机或者后缀数组先从后缀自动机的思路入手,我们知道两个后缀的LCP就是它们在后缀自动机fail树上的LCA的len。所以这道题就变成了:在fail树上,求uuu点的不同子树内的wi xor wjw_i~\text{xor} ~w_jwi xor wj的最大值。需要Trie树合并,查询异或最大值。原创 2020-06-09 17:03:31 · 210 阅读 · 0 评论 -
【COCI 2011-2012 contest#4】decode【本质匹配KMP】
题目描述:总字符数均≤106\le10^6≤106的两篇文章S,TS,TS,T,把TTT中的单词替换成某一个单词且不同单词对应不同替换后能与SSS中连续的一段匹配,求最早可能匹配到到的位置。题目分析:相同的单词对应的单词也是相同的,所以只需要比较每个单词与前面最近的与它相同的单词的距离,如果SSS和TTT中的距离相同则可以匹配,用Trie树可以方便快速地找前一个相同单词。Code:#in...原创 2019-11-13 09:33:07 · 197 阅读 · 0 评论 -
BZOJ 3217: ALOEXT 【块状链表套trie树】
题目分析:由于这位dalao实在讲的太好了,所以我就直接引用了。。由于此题需要强制在线的删除或者插入,所以我们基于块状链表分块,在每个块内存储指定区间内的所有数,以及该区间内的最大值和次大值,同时再维护一个由该区间内所有数组成的trie树。对于修改一个数,首先在该块的trie数中删除该数(直接伪删(减cnt)),然后再插入,接着更新最大值和次大值。对于插入一个数,直接在trie树...原创 2019-03-21 17:14:15 · 218 阅读 · 0 评论 -
十二省联考D1T1 异或粽子【可持久化Trie+优先队列】
洛谷传送门题目分析:我们知道Trie树可以对某一个值查询与它异或第k大的值。但是全局前k大就懵逼了。这时候就有一个神奇的技巧套路,对每个右端点,找到与它异或最大的左端点,将这n个值放入优先队列中。这时候队首一定是全局最大值,加进答案中,pop掉,然后再找到这个值对应的右端点的左端点中第二大的,放入优先队列中。这时候的队首一定是全局第二大。一直这样做k次即可。找右端点对应的第几大左端...原创 2019-04-06 19:05:26 · 231 阅读 · 0 评论