ACM-ICPC 2017 Asia Xi'an A XOR (线性基+线段树思想)
题意;给个数组,每次询问一个区间你可以挑任意个数的数字异或和 然后在或上k的最大值
题解:线性基不知道的先看这个,一个线性基可以log的求最大值把对应去区间的线性基求出来然后用线段树维护线性基
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define maxn 100009
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
int read()
{
char ch=' ';
;
')
ch=getchar();
')
{
ans=ans*+ch-';
ch=getchar();
}
return ans;
}
struct ac{
];
void init(){
memset(a,,sizeof(a));
}
bool add(int x){
;j>=;j--){
<<j)){
if(!a[j]){
a[j]=x;
break;
}
x^=a[j];
}
}
;
}
int query(){
;
;j>=;j--){
if((x^a[j])>x){
x^=a[j];
}
}
return x;
}
ac merge_LB(ac x){
ac ret;
;i<=;i++){
ret.a[i]=a[i];
}
;i<=;i++){
ret.add(x.a[i]);
}
return ret;
}
}tre[maxn*];
int b[maxn];
void build(int l,int r,int in){
tre[in].init();
if(l==r){
tre[in].add(b[l]);
return ;
}
;
build(l,mid,);
build(mid+,r,+);
tre[].merge_LB(tre[+]);
}
ac query(int l,int r,int x,int y,int in){
if(l==x&&r==y){
return tre[in];
}
;
//ac ret;ret.init();
));
,y,+));
).merge_LB(query(mid+,r,mid+,y,+));
}
int main(){
int t;
cin>>t;
while(t--){
int n,m,k;
//scanf("%d%d%d",&n,&m,&k);
n=read();m=read();k=read();
k=~k;
;j<=n;j++){
scanf("%d",&b[j]);
b[j]&=k;
}
k=~k;
build(,n,);
;j<m;j++){
int l,r;
//scanf("%d%d",&l,&r);
l=read();r=read();
ac ans=query(l,r,,n,);
int an=ans.query();
an|=k;
printf("%d\n",an);
}
}
}
ACM-ICPC 2017 Asia Xi'an A XOR (线性基+线段树思想)的更多相关文章
- ACM-ICPC 2017 西安赛区现场赛 A. XOR(线性基+线段树)
题目链接:https://nanti.jisuanke.com/t/20749 参考题解:https://blog.csdn.net/Lee_w_j__/article/details/8266418 ...
- 计蒜客 A1607 UVALive 8512 [ACM-ICPC 2017 Asia Xi'an]XOR
ICPC官网题面假的,要下载PDF,点了提交还找不到结果在哪看(我没找到),用VJ交还直接return 0;也能AC 计蒜客题面 这个好 Time limit 3000 ms OS Linux 题目来 ...
- ACM-ICPC 2017 Asia Xi'an
ACM-ICPC 2017 Asia Xi'an Solved A B C D E F G H I J K 7/11 O O Ø O O ? O O O for passing during the ...
- ACM ICPC 2017 Warmup Contest 9 I
I. Older Brother Your older brother is an amateur mathematician with lots of experience. However, hi ...
- ACM ICPC 2017 Warmup Contest 9 L
L. Sticky Situation While on summer camp, you are playing a game of hide-and-seek in the forest. You ...
- luogu P2574 XOR的艺术 (线段树)
luogu P2574 XOR的艺术 (线段树) 算是比较简单的线段树. 当区间修改时.\(1 xor 1 = 0,0 xor 1 = 1\)所以就是区间元素个数减去以前的\(1\)的个数就是现在\( ...
- HDU 5475(2015 ICPC上海站网络赛)--- An easy problem(线段树点修改)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5475 Problem Description One day, a useless calculato ...
- codeforces 22E XOR on Segment 线段树
题目链接: http://codeforces.com/problemset/problem/242/E E. XOR on Segment time limit per test 4 seconds ...
- Xor && 线性基练习
#include <cstdio> #include <cstring> ; ; int cnt,Ans,b,x,n; inline int Max(int x,int y) ...
随机推荐
- [转帖]前端-chromeF12 谷歌开发者工具详解 Console篇
前端-chromeF12 谷歌开发者工具详解 Console篇 https://blog.csdn.net/qq_39892932/article/details/82655866 趁着搞 cloud ...
- PostgreSQL 安装了contrib 之后 登录失败的问题
1. 自己之前只是安装了 pg 10.6 2. 开发同事 需要用到 一个extensions 叫做 uuid-ossp 3. 执行报错 详情见昨天的blog 4. 然后执行了升级操作 结果 pg10 ...
- Day 4-4 shutil模块
常用方法: import shutil f = open("conf.ini", "r") f1 = open("shutil.ini", ...
- git修改用户名、邮箱
在windows使用git命令方法如下(以win7为例):1.msysgit 是 Windows 版的 Git可以百度搜索Git下载.2.安装完成后,开始菜单里找到“Git”->“Git Bas ...
- 区分Python中的id()和is以及Python中字符串的intern机制
参考:1. https://blog.csdn.net/lnotime/article/details/81194633 2.https://segmentfault.com/q/1010000015 ...
- 将大数组里面的小数组平行展开的实现(Making a flat list out of list of lists in Python)
今天在生成数据的时候遇到了这个需求,其实写一个for循环可以很容易解决这个问题,但是无论是性能还是酷炫程度上都不行 所以顺手搜索了一下. 例子是将 l = [[1, 2, 3], [4, 5, 6], ...
- WPF程序中App.Config文件的读与写
WPF程序中的App.Config文件是我们应用程序中经常使用的一种配置文件,System.Configuration.dll文件中提供了大量的读写的配置,所以它是一种高效的程序配置方式,那么今天我就 ...
- WPF一步步实现完全无边框自定义Window(附源码)
在我们设计一个软件的时候,有很多时候我们需要按照美工的设计来重新设计整个版面,这当然包括主窗体,因为WPF为我们提供了强大的模板的特性,这就为我们自定义各种空间提供了可能性,这篇博客主要用来介绍如何自 ...
- Python学习之路—————day04
今日内容: 1. 循环语句 1.1 if判断 1.2 while循环 1.3 for循环 一.if判断 语法一: if 条件 代码块1 代码块2 代码块3 # 例: sex='female' age= ...
- SpringMVC 重定向到其他系统的页面的两种方式
//测试重定向到另外的一个系统 @RequestMapping("/tttt") public void testRed(HttpServletResponse response) ...