2017 ICPC西安区域赛 A - XOR ,线段树合并线性基

题目链接:A - XOR

题意;给个数组,每次询问一个区间你可以挑任意个数的数字异或和 然后在或上k的最大值

题解:线性基不知道的先看这个,一个线性基可以log的求最大值把对应去区间的线性基求出来然后用线段树维护线性基

就可以了。还要用快读。

#include<bits/stdc++.h>
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=1e4+5;
int n,q,a[N];
unsigned int k;
namespace IO {const int MX = 4e7; //1e7 占用内存 11000kbchar buf[MX]; int c, sz;void begin() {c = 0;sz = fread(buf, 1, MX, stdin);//一次性全部读入/*int tot = 1;char now;while((now = getchar()) != EOF){buf[tot++] = now;}sz = tot;*/}inline bool read(int &t) {while (c < sz && buf[c] != '-' && (buf[c] < '0' || buf[c] > '9')) c++;if (c >= sz) return false;//若读完整个缓冲块则退出bool flag = 0; if(buf[c] == '-') flag = 1, c++;for(t = 0; c < sz && '0' <= buf[c] && buf[c] <= '9'; c++) t = t * 10 + buf[c] - '0';if(flag) t = -t;return true;}
}
struct L_B
{int a[32];void init(){memset(a,0,sizeof(a));}bool insert(int val){for(int i=30;i>=0;i--){if(val&(1<<i)){if(!a[i]){a[i]=val;break;}else val^=a[i];}}return val>0;}int query_max(){int ret=0;for(int i=30;i>=0;i--){if((ret^a[i])>ret)ret^=a[i];}return ret;}L_B merge(L_B m){L_B ret;for(int i=0;i<31;i++){ret.a[i]=a[i];}for(int i=0;i<31;i++){for(int j=i;j>=0;j--){if(m.a[i]&(1<<j)){if(ret.a[j]) m.a[i]^=ret.a[j];else {ret.a[j]=m.a[i];break;}}}}return ret;}
}tr[N<<2];
void build(int l,int r,int rt)
{if(l==r){tr[rt].init();tr[rt].insert(a[l]);return ;}int m=l+r>>1;build(ls);build(rs);tr[rt]=tr[rt<<1].merge(tr[rt<<1|1]);
}
L_B query(int L,int R,int l,int r,int rt)
{if(L<=l&&r<=R){return tr[rt];}int m=l+r>>1;if(L<=m&&m<R)return query(L,R,ls).merge(query(L,R,rs));if(L<=m)return query(L,R,ls);if(R>m)return query(L,R,rs);
}
int main() {IO::begin();int T;IO::read(T);while(T--){int kk;IO::read(n);IO::read(q);IO::read(kk);k=kk;k=~k;for(int i=1;i<=n;i++){IO::read(a[i]);a[i]&=k;}k=~k;build(1,n,1);while(q--){int l,r;IO::read(l);IO::read(r);L_B ans=query(l,r,1,n,1);int an=ans.query_max();an|=k;printf("%d\n",an);}}
}

 

一个线性基可以log的求最大值把对应去区间的线性基求出来然后#include<bits/stdc++.h>

转载于:https://www.cnblogs.com/lhclqslove/p/9754858.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 中的List动态转Map集合

首先创建一个实体类 package com.tyzou.controller;public class Test {private String name;private String pwd;public String getName() {return name;}public void setName(String name) {this.name name;}public String getPwd() {return pwd;}public void setPwd(Strin…

[css] 使用rem布局时怎样合理设置根标签字体大小?

[css] 使用rem布局时怎样合理设置根标签字体大小&#xff1f; UI出2倍稿&#xff0c;然后用js计算当前设备和UI设计稿之间的比例关系&#xff0c;通过resize实时计算根标签字体大小&#xff0c;即可。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易…

Centos7安装SVN+HTTP

1.首先安装svn yum install subversion 2.安装httpd yum install httpd 3.安装apache的svn操作模块 yum install mod_dav_svn yum install openssl openssl-devel 4.查看svn版本 svnserve –version 5.创建svn版本库 svnadmin create /home/svn/project 6.进入svn的c…

【转】30种MySQL索引优化的方法

第一方面&#xff1a;30种mysql优化sql语句查询的方法 1.对查询进行优化&#xff0c;应尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by涉及的列上建立索引。2.应尽量避免在 where 子句中使用 !或<> 操作符&#xff0c;否则将引擎放弃使用索引而进行全表扫描…

[css] 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?

[css] 解释下css3的flexbox&#xff08;弹性盒布局模型&#xff09;&#xff0c;以及它应用场景有哪些&#xff1f; 手机端中比较常用的三段式布局, 头尾固定高度 中间自适应 它可以修改父元素下所有子元素的位置 和排序方式 相对于浮动 更加强大 要注意的是指定flex之后,子元…

centos下resin4启动一会儿自动关闭处理

启动的时候用下面的方式启动就不会自动关闭了&#xff1a; ./resin.sh -conf /u02/resin4/conf/resin.xml -server app-0 startmyeclipse可以在 Optional program arguments里面填写&#xff1a;-server app-0

[css] 你有使用过vmax和vmin吗?说说你对它们的理解

[css] 你有使用过vmax和vmin吗&#xff1f;说说你对它们的理解 vmax和vmin都是相对于窗口大小的长度单位。100vmax相当于100%当前窗口长或者宽的长度&#xff0c;取其中最大值&#xff0c;vmin反之。如果css函数max()和min()普及后&#xff0c;100vmax相当于max(100vw, 100vh)个…

BZOJ 1086 [SCOI2005]王室联邦(树分块)

题意&#xff1a;中文题&#xff0c;略 思路&#xff1a;秦皇岛前就一直想学&#xff0c;后来没怎么想通&#xff0c;就算了。现在雅不是很懂&#xff0c;一直似懂非懂的&#xff0c;对于树分块的种类&#xff0c;有位聚聚已经整理好了&#xff08;传送门&#xff09;&#xff…

svn locked解决方法

方法一.直接进行cleanup&#xff1b;对较小的文件比较管用&#xff0c;文件稍大些等待时间很长或不起作用&#xff1b; 方法二.选择文件&#xff0c;右键执行release lock&#xff1b;等待时间较长&#xff1b; 方法三.手动删除锁定文件(推荐)&#xff1a; 在运行中输入cmd进入…

[包计划] node-fs-extra

node-fs-extra fs-extra 添加了未包含在 fs 模块中的文件系统方法&#xff0c;并为 fs 方法添加了 promise 支持。 const fs require(fs-extra)// Async with promises: fs.copy(/tmp/myfile, /tmp/mynewfile).then(() > console.log(success!)).catch(err > console.er…

[css] css中padding和margin是相对于父元素还是子元素呢?

[css] css中padding和margin是相对于父元素还是子元素呢&#xff1f; padding就是往自己身体里塞东西&#xff08;盒子里面&#xff09;&#xff0c;margin就是穿衣服&#xff08;盒子外面&#xff09;。 >padding相对于子元素&#xff0c;margin相对于父元素个人简介 我是…

MyEclipse2015双击不能打开文件

1.返回桌面 2.连续按5次Shift键 3.点击启用粘滞键 4.再点击应用&#xff0c;然后确定 4.然后重新打开一下myeclipse2015就可以了 第二种方法&#xff1a; 1.关闭MyEclipse Explor窗口&#xff08;这个MyeclipseExplor是有问题的&#xff0c;不推荐用这个&#xff09; 2.W…

python 获取当前文件夹下所有文件名

os 模块下有两个函数&#xff1a; os.walk() os.listdir() 1 # -*- coding: utf-8 -*- 2 3 import os 4 5 def file_name(file_dir): 6 for root, dirs, files in os.walk(file_dir): 7 print(root) #当前目录路径 …

[css] 使用css实现彩虹的效果

[css] 使用css实现彩虹的效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>彩虹</title><style>.rainbow-wrap {width: 500px;height: 500px;background-color: red;position: relati…

MyEclipse2015 Web项目转Maven项目

1、新建一个Web项目 下面是web项目的结构&#xff1a; 2.项目右键属性(开始转啦&#xff0c;注意诺) 注意&#xff1a;Target runtime可以随便选一个运行容器&#xff0c;比如tomcat,也可以不改动,直接下一步 注意&#xff1a;下面一定要选Standard Maven JEE project structu…

【题解】洛谷P4145 花神游历各国(线段树)

洛谷P4145&#xff1a;https://www.luogu.org/problemnew/show/P4145 思路 这道题的重点在于sqrt(1)1 一个限制条件 与正常线段树不同的是区间修改为开方 那么我们用一个数组记录每个区间的最大值 只有当这个区间的最大值大于1时才需要开方 因此 当我们更新到叶子节点时把每个区…

[css] 怎么IE6下在使用margin:0 auto;无法使其居中?

[css] 怎么IE6下在使用margin:0 auto;无法使其居中&#xff1f; 浏览器解析的问题&#xff0c;IE6下需要对居中的元素设置text-align:center属性使其margin:0 auto;生效。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷…

MyEclipse2015修改项目部署名称(WebContextRoot)

项目右键,properties中查找myeclipse----》deployment assembly----》往下拉---》web context root 路径修改。

基于墨刀实现的短视频分享软件原型设计

1.设计理念 最近几年&#xff0c;随着生活节奏的加快&#xff0c;“快餐文化”成了社会的主流&#xff0c;人们乐于忙里偷闲&#xff0c;或者在电车上&#xff0c;或者在等车时&#xff0c;又或者忙了很久有些疲惫的时候打一局竞技手游&#xff0c;或是逛逛抖音&#xff0c;b站…