字典树
࿐ཉི༗࿆一鲸落,万物生 ༗࿆ཉི࿐
这个作者很懒,什么都没留下…
展开
-
2021“MINIEYE杯”中国大学生算法设计超级联赛(1)F - Xor sum
题目大意:给你一段序列和一个数k,让我们求出长度最小的一段序列,这段序列的异或值大于等于k。解题思路:首先我们要知道如何快速求出一段区间的异或值,这里我们可以采用异或前缀和的思想,a[l,r]=a[1,l-1]^a[1,r],这样一转化问题就变成了,在区间1~n上找两个端点,使这两个端点之间的距离最小,并且a[r]^a[l-1]>=k,这样的话我们就可以用字典树来维护一个后缀异或和,每次以当前点为左端点,去后缀中找到满足条件的最小的右端点,这样不断更新最短区间长度并记录左右端点,思路看起来其实并没有多难,关原创 2022-07-13 23:40:15 · 105 阅读 · 0 评论 -
可持久化字典树 AcWing256 最大异或和
分析:这个题乍一看就是一个普普通通的字典树,但是仔细读题后会发现只是用单纯的字典树好像解决不了这个问题,因为字典树在插入之后无法分辨插入的顺序,它不像数组一样每插入一个数就对应一个下标,它是把所有数字的二进制表示都混在了一起,所以我们就要考虑保存它的历史版本,然后就有了可持久化字典树这个东东。 具体的细节见代码的注释部分,这里需要注意一点,我们在建立第一个版本之前要先建立第0个版本,因为我们算前缀和的时候是把第0个也算进去了,而且,如果当前让我们选择是区间如果是1到某一个数,那按照我们的思路会查找第...原创 2021-10-21 21:48:56 · 103 阅读 · 0 评论