【JZOJ 5382】 数列 口胡

来源:互联网 发布:淘宝 快递信息录入 编辑:程序博客网 时间:2024/05/22 11:40

Description

给出长度为n(n<=20000)的{ai},现有m(m<=20000)个询问,每次询问给出l,r,需要回答对于任意l<=i<=j<=r,最大的ai xor ai+1 xor...xor aj

Analysis

首先显然要将a取一个前缀异或s,最小化的那坨东西就是sj xor si1
考虑如果一个端点固定(sj),另一个端点不固定(si),即对于同一个sj,要求出多个simax(sj xor si)
这个显然把si全部扔进trie里,用sj在trie上跑就好
但是现在有两个端点不固定

分块

因为n<=20000,这个数据范围提示了分块的可行性
既然有了分块,就有预处理。我们不难借助trie预处理f[l][r]表示第l到第r块之间的答案
那么两边会剩下一小坨,在函数式的trie里面跑一下就好
于是复杂度变成了O(n1.5logn)

原创粉丝点击