【Codeforces 1100 F Ivan and Burgers 】线性基

F

给你n个数 q次询问 问你这q次区间内能异或的最大值

异或的最大值我们容易想到线性基 但是要区间内 我们不能暴力扫区间构造

所以我们把问题离线了再去做 将询问按照 r 的升序排序 那么按顺序插入 1 - r 的数目构造线性基 然后记录一下pos 我们每个线性基优先取右边的 这样查询的时候只要在pos >= l的位置查询就行 因为线性基只有20组 所以可以暴力查询 也就是log级别的插入与查询

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<

 

你可能感兴趣的:(ACM,Codeforces)