T83312 【音乐会】达拉崩吧·上
T83312 【音乐会】达拉崩吧·上
题解
线段树板子题
把原来的 + 变成 ^
但是注意一下懒标记,这里讲一下小技巧

代码
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+;
int n,m,x,y,v,opr;
int a[maxn],add[maxn*];
long long sum[maxn*];
long long ans; inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} void build(int k,int l,int r)
{
if(l==r)
{
sum[k]=a[l]; return ;
}
int mid=(l+r)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
sum[k]=sum[k<<]^sum[k<<|];
} void Add(int k,int l,int r,int p)
{
add[k]^=p;
sum[k]^=(long long)((r-l+)%)*p; //注意这里的小技巧
} void pushdown(int k,int l,int r,int mid)
{
if(add[k]==) return ;
Add(k<<,l,mid,add[k]);
Add(k<<|,mid+,r,add[k]);
add[k]=;
} void modify(int k,int l,int r,int x,int y,int v)
{
if(x<=l&&r<=y) return Add(k,l,r,v);
int mid=(l+r)>>;
pushdown(k,l,r,mid);
if(x<=mid) modify(k<<,l,mid,x,y,v);
if(mid<y) modify(k<<|,mid+,r,x,y,v);
sum[k]=sum[k<<]^sum[k<<|];
} long long query(int k,int l,int r,int x,int y)
{
if(x<=l&&r<=y) return sum[k];
int mid=(l+r)>>;
long long res=;
pushdown(k,l,r,mid);
if(x<=mid) res^=query(k<<,l,mid,x,y);
if(mid<y) res^=query(k<<|,mid+,r,x,y);
return res;
} int main()
{
n=read();m=read();
for(int i=;i<=n;i++)
a[i]=read(); build(,,n); for(int i=;i<=m;i++)
{
opr=read();x=read();y=read();
if(opr==)
{
v=read();
modify(,,n,x,y,v);
}
if(opr==)
{
ans=query(,,n,x,y);
printf("%ld\n",ans);
}
} return ;
}
强烈安利 water-lift QWQ
T83312 【音乐会】达拉崩吧·上的更多相关文章
- 2019.6.28 校内测试 T4 【音乐会】达拉崩吧·上
考试的一道附加题~ 一看题目描述:把区间[l,r]里每个数异或上x,求区间[l,r]里所有数的异或和,这明显的要用数据结构或RMQ吧. 恩,所以正解就是线段树啦,至于树状数组行与否,不知道~ wate ...
- 达拉草201771010105《面向对象程序设计(java)》第十八周学习总结
达拉草201771010105<面向对象程序设计(java)>第十八周学习总结 实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构 ...
- 达拉草201771010105《面向对象程序设计(java)》第十五周学习总结
达拉草201771010105<面向对象程序设计(java)>第十四周学习总结 第一部分:理论知识 JAR文件: 1.Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包 ...
- 达拉草201771010105《面向对象程序设计(java)》第十四周学习总结
达拉草201771010105<面向对象程序设计(java)>第十四周学习总结 第一部分:理论知识 布局管理器: 布局管理器是一组类. 实现java.awt.LayoutManager接口 ...
- 达拉草201771010105《面向对象程序设计(java)》第十二周学习总结
达拉草201771010105<面向对象程序设计(java)>第十二周学习总结 第一部分:理论知识 Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在j ...
- 达拉草201771010105《面向对象程序设计(java)》第八周学习总结
达拉草201771010105<面向对象程序设计(java)>第八周学习总结 实验六接口的定义与使用 实验时间 2018-10-18 1.实验目的与要求 (1) 掌握接口定义方法: (2) ...
- 达拉草201771010105《面向对象程序设计(java)》第六周学习总结
达拉草201771010105<面向对象程序设计(java)>第六周学习总结 第一部分:理论知识 1.类.超类和子类 类继承的格式: class 新类名extends已有类名一般来说,子类 ...
- 达拉草201771010105《面向对象程序设计(java)》第三周学习总结
达拉草201771010105«面向对象程序设计(java)»第三周学习总结 第一部分:实验部分 1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟 ...
- 达拉草201771010105《面向对象程序设计(java)》第二周学习总结
达拉草201771010105<面向对象程序设计(java)>第二周学习总结 一.理论知识学习部分 这一周我们学习的是书上第三章java的基本程序设计结构的内容,在这一章 ...
随机推荐
- python 模块使用
模块使用 定义:模块就像一个工具包一样,里面有很多工具(函数.类),使用时需要通过import导入. 分类: 标准库:random.sys.os.time 第三方:就是好人已经写好的特定功能的模块,你 ...
- git 基本命令操作
配置 Git 的相关参数. Git 一共有3个配置文件: 1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效.2. 全局配置文件:Mac 系统在 ~/.gi ...
- 获取图书isbn信息 共享图书开发 图书信息接口开发过程中的心得体会
最近做一个图书共享的项目,需要用户扫一扫书籍后面的一维码,获取到书籍的isbn号码,然后通过这个isbn号码能够直接获取到这本书的名字.简介.价格.图片等信息. 于是百度搜了下,之前很多的豆瓣的接口, ...
- 16、Nginx Rewrite重写
1.Rewrite基本概述 1.1.什么是rewrite Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服务器的地址重新定向到其他URL的过程. 1.2.Rewrite使 ...
- The Linux Kernel 4.15.0官方文档内核语言风格解读(留)
https://www.kernel.org/doc/html/v4.15/translations/zh_CN/coding-style.html 1.缩进 制表符是 8 个字符,所以缩进也是 8 ...
- GCD实战之多个网络请求的并发
// 创建信号量 dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); // 创建全局并行 dispatch_queue_t q ...
- 【BZOJ1016】【Luogu P4208】 [JSOI2008]最小生成树计数 最小生成树,矩阵树定理
蛮不错的一道题,遗憾就遗憾在数据范围会导致暴力轻松跑过. 最小生成树的两个性质: 不同的最小生成树,相同权值使用的边数一定相同. 不同的最小生成树,将其都去掉同一个权值的所有边,其连通性一致. 这样我 ...
- django-视图层与模板层
1.视图层 小白必会三板斧 1.HttpResponse return HttpResponse(‘字符串’) 2.render return render(request,‘HTML页面’ ,{‘n ...
- 将TextEdit设置为密码框
属性--Properties--UseSystemPasswordChar设置为true
- websocket练习
html代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...