
可持久化trie
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
bzoj 2741 【FOTILE模拟赛】L 分块 可持久化trie树
先处理一个前缀异或和,这样就从查询一段异或和最大的区间变成查询两个异或和最大的点。 然后处理一个可持久化trie,分块。 用可持久化trie预处理块内异或值最大的两个数,两块间异或值最大的两个数。 然后查询区间时对于整块的用块内和块间的最大值更新答案,对于其他的用可持久化trie求一下最大值。 设块大小为S,那么时间复杂度是这玩意: O(n2Slog+M(n2S2+Slog))O(\fra原创 2016-10-21 11:26:16 · 243 阅读 · 0 评论 -
bzoj 3166 [Heoi2013]Alo 可持久化trie 线段树
先对序列建一个可持久化trie。 然后从大到小将元素插到线段树对应位置。 每次插入前求以该元素为此小值的最大答案 (求该元素在线段树中前驱的前驱+1和后继的后继-1,中间的部分与该元素的最大异或和就是答案) 最大异或和从可持久化trie上查询。#include <bits/stdc++.h>using namespace std;#define N 51000#define M 110原创 2016-10-25 10:22:07 · 249 阅读 · 0 评论