解析

做幸运数字的时候逛题解区爬过来的
挺妙的

把所有询问离线下来,按右端点排序
贪心的让最高位更高的向量出现的尽可能向右
实现上可以把线性基里的向量和当前的数swap来实现
代码就非常好写了

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf (n+1)
//#define debug(...) fprintf(stderr,__VA_ARGS__)
const int N=5e5+100;
const int M=2e5+10500;
const double eps=1e-5;
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}int n,m;struct node{int to,nxt;
}p[N<<1];
int fi[N],cnt;
inline void addline(int x,int y){p[++cnt]=(node){y,fi[x]};fi[x]=cnt;return;
}ll mi[65];int v[35],pos[35];
void upd(int x,int id){for(int i=20;i>=0;i--){if(x&(1<<i)){if(!v[i]){v[i]=x;pos[i]=id;break;}  if(pos[i]<id){swap(pos[i],id);swap(v[i],x);}x^=v[i];}}
}
struct query{int l,r,id;bool operator < (const query o){return r<o.r;}
}q[N];
int ans[N],a[N];
inline int calc(int l){int res(0);for(int i=20;i>=0;i--){//printf("i=%d v=%d pos=%d\n",i,v[i],pos[i]);if((res&(1<<i))==0&&v[i]&&pos[i]>=l) res^=v[i];}return res;
}
int main(){#ifndef ONLINE_JUDGE//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);
#endifn=read();for(int i=1;i<=n;i++) a[i]=read();m=read();for(int i=1;i<=m;i++){q[i].l=read();q[i].r=read();q[i].id=i;}sort(q+1,q+1+m);int pl(0);for(int i=1;i<=m;i++){while(pl<q[i].r){pl++;upd(a[pl],pl);}ans[q[i].id]=calc(q[i].l);//printf("(%d %d) id=%d\n",q[i].l,q[i].r,q[i].id);}for(int i=1;i<=m;i++) printf("%d\n",ans[i]);return 0;
}
/*
10
36 32 32 70 101 8 60 25 101 88
1
2 9
*/

CF1100F Ivan and Burgers(线性基)相关推荐

  1. CF1100F Ivan and Burgers

    CF1100F Ivan and Burgers 静态区间,选取任意个数使得它们的异或和最大 \(n,\ m\leq5\times10^5,\ a_i\in[0,\ 10^6]\) lxl ST表,线 ...

  2. 线性代数(矩阵、高斯、线性基……)

    矩阵 矩阵加法: 相同位置相加. 矩阵乘法: 满足分配率.结合律,不满足交换律(矩阵与逆矩阵之间除外) . 矩阵转置: 记矩阵为 \(A\) ,则 \(A\) 的转置记为 \(A^T\) . 性质: ...

  3. 【CF1100F】 Ivan and Burgers (分治+线性基)

    description 戳我看题目(づ ̄3 ̄)づ╭❤- solution 异或和最大 --关联线性基 线性基: 原序列的每一个数都能由线性基里若干个数异或得到 线性基里若干个数的异或结果不可能为0 如 ...

  4. F. Ivan and Burgers(前缀线性基模板)

    前缀线性基模板 F. Ivan and Burgers /*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) ...

  5. 【Codeforces Round #532 (Div. 2) F. Ivan and Burgers】离线+线性基

    F. Ivan and Burgers 题意 n个数,q次询问,每次询问一个区间内选出任意个数的异或最大值. 1<=n<=5∗1051<=n<=5*10^51<=n< ...

  6. Codeforces Round #532 (Div. 2) F. Ivan and Burgers(可持久化异或线性基+双指针)

    题意 给n个数,q组询问,每次询问l到r的最大异或和 思路来源 某cf奆神代码 题解 本来应该是线性基上分治的 这里一发基数+贪心也能过 真是神仙代码啊 双指针的经典应用: 对于每个询问[l,r],r ...

  7. Ivan and Burgers(CF-1100F)

    Problem Description Ivan loves burgers and spending money. There are nn burger joints on the street ...

  8. 线性代数 —— 线性基与前缀线性基

    [概述] 线性基,是线性代数中的概念,在信息学竞赛中,前缀线性基是线性基的扩展,他们主要用于处理有关异或和的极值问题. 一组线性无关的向量即可作为一组基底,张起一个线性的向量空间,这个基底即称为线性基 ...

  9. 【CodeForces 1100F】异或线性基 | 贪心 | 离线区间最大异或和 | E

    补题ing- 真的不应该错过这场比赛的 qwq 1100F. Ivan and Burgers time limit per test: 3 seconds memory limit per test ...

最新文章

  1. 常用jar包之commons-beanutils使用
  2. leetcode算法题--出界的路径数★
  3. SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
  4. Python–新一代编程语言
  5. Kotlin学习笔记——安装配置kotlin
  6. agv系统介绍_AGV地面控制系统介绍
  7. 计算机报名忻州考点,2020山西省考忻州考区考点安排
  8. 【python】@abstractmethod的用法
  9. 面试必会之LinkedList源码分析
  10. HOWTO:InstallShield中如何通过脚本获取“My Documents”路径
  11. 个人收款解决方案之三方聚合收款方案
  12. 网上赚钱方法有哪些?这5种赚钱方法,非常适合草根!
  13. 如何把PDF转成护眼模式/反色/黑底白字
  14. 普通用户与root用户的相互切换
  15. bootstrap的图标新手使用教程
  16. C++ API设计笔记
  17. 如何快速搭建公司网站?
  18. 当前佛教界的乱相之一就是以凡滥圣、惑乱人心
  19. 多线程Retry: 解释
  20. xcode 可以打开xmind_XMind 推出的轻量化脑图工具,时隔两年迎来大版本更新:Lighten 2...

热门文章

  1. mysql相交_MySQL相交
  2. python姓名输出语句_Python最基本的输入输出详解
  3. server 2008 服务器不能访问 java项目,Java 8上的SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接...
  4. 2021年度最全面JVM虚拟机,类加载过程与类加载器
  5. android最好的3d游戏机,终极盘点:Android必玩十大超猛3D游戏
  6. linux 装nano命令,linux下安装 nano 如果没有这个命令的话~~可以看下
  7. 计算机二级链表,计算机二级c语言上机考试——结构体与链表(3页)-原创力文档...
  8. Java 重写 多态性_java多态性重写overriding和重载overloading的区别
  9. leetcode454. 四数相加 II(思路+详解)
  10. 7-46 新浪微博热门话题 (30 分)(思路+详解+set + map)pta逐个点过的 来呀兄弟们