可持久化trie
fyc_kabuto
一个蒟蒻程序员
展开
-
bzoj 2741: 【FOTILE模拟赛】L
题意:在线询问区级最大异或和。题解:分块+可持久化trie。 第一次写可持久化trie,原来还有这种操作。 先求出前缀的异或和。那么原题就变成了在一段区间选两个数,异或值最大。 先考虑确定一个值的情况。 那另一个值就是在这段区间的数的二进制下的trie上尽量走相反的路线。 用可持久化trie就好,跟主席树差不多,自己YY的模板,贼慢。 然后分块求答案。f[i][j]f[i][j] 表示第原创 2017-08-29 12:39:36 · 400 阅读 · 0 评论 -
bzoj 3439: Kpm的MC密码
我的做法大致跟OZY大佬一样。 就是将所有串倒着建入可持久化trie里面,二分答案。 这里有详细点的讲解与其他做法原创 2017-09-19 11:48:28 · 350 阅读 · 0 评论 -
bzoj 4260: Codechef REBXOR
题意:求两段异或和的和最大。题解:可持久化trie。我之前那篇写了。bzoj 2741 于是预处理两个东西,一个是前缀中的一段异或最大值,一个是后缀的最大值。 然后枚举下就好了。 贼慢,卡时过,可能是模板太菜了。 code:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#define LL lo原创 2017-09-03 15:26:35 · 276 阅读 · 0 评论 -
bzoj 4477: [Jsoi2015]字符串树
可持久化trie裸题原创 2017-10-19 15:01:38 · 230 阅读 · 0 评论 -
uoj 176. 新年的繁荣
题意:给出一个完全图,边权为两点权值的and,求最大生成树。题解:这题用最小生成树的Boruvka算法。 大概就是每次找到每一个联通块权值最大的边,将这些联通块合并,直到只剩一个联通块。因为每次联通块的个数至少减半,所以只会做log次操作。 那么这题相当于每个点有不同颜色,要找到每个点的异色点中最大的and值。 扔题解跑 code:#include<cstdio&...原创 2018-03-13 14:59:44 · 949 阅读 · 0 评论 -
3166: [Heoi2013]Alo
题意:找到一个区间,设kkk位区间次大值,求max(k⊕a[i]∣l≤i≤r)max(k \oplus a[i]|l\le i \le r)max(k⊕a[i]∣l≤i≤r)题解:首先考虑某个值为次大值的区间,有且仅有一个值比他大,这个可以排序+set求出。然后求区间与一个值的异或最大值就是可持久化trie经典题了。code:#include<set>#include&l...原创 2019-01-05 10:15:50 · 147 阅读 · 0 评论