cf242 E

题意:

$n$ 个数 $a_i$, 

两种询问

$1, l, r$ 查询 $[l, r]$ 的和

$2, l, r, x$ 将区间 $[l, r]$ 所有数异或 $x$

 

建立 $30$ 课线段树

第 $i$ 颗线段树维护所有 $a$ 二进制的第 $i$ 为上的数字 $0, 1$

异或操作分别以 $x$ 的二进制相应位异或相应线段树

可见只有当 $x$ 的二进制位为 $1$ 是操作有效

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>using namespace std;#define LL long long#define gc getchar()
inline int read() {int x = 0; char c = gc; while(c < '0' || c > '9') c = gc;
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc; return x;}
inline LL read_LL() {LL x = 0; char c = gc; while(c < '0' || c > '9') c = gc;
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc; return x;}
#undef gcconst int N = 1e5 + 10;int Size[N << 2];
int n, m, Ans;#define lson jd << 1
#define rson jd << 1 | 1struct Node {int W[N << 2], F[N << 2];void Push_down(int jd) {F[lson] ^= 1, F[rson] ^= 1;W[lson] = Size[lson] - W[lson];W[rson] = Size[rson] - W[rson];F[jd] = 0;}void Push_up(int jd) {W[jd] = W[lson] + W[rson];}void Sec_G(int l, int r, int jd, int x, int y) {if(x <= l && r <= y) {F[jd] ^= 1;W[jd] = Size[jd] - W[jd];return ;}if(F[jd]) Push_down(jd);int mid = (l + r) >> 1;if(x <= mid) Sec_G(l, mid, lson, x, y);if(y > mid ) Sec_G(mid + 1, r, rson, x, y);Push_up(jd);}void Sec_A(int l, int r, int jd, int x, int y) {if(x <= l && r <= y) {Ans += W[jd];return ;}if(F[jd]) Push_down(jd);int mid = (l + r) >> 1;if(x <= mid) Sec_A(l, mid, lson, x, y);if(y > mid)  Sec_A(mid + 1, r, rson, x, y);}
} Tree[35];void Build_tree(int l, int r, int jd) {Size[jd] = r - l + 1;if(l == r) {int x = read();for(int i = 0; (1 << i) <= x; i ++) {Tree[i + 1].W[jd] = (bool) ((1 << i) & x);}return ;}int mid = (l + r) >> 1;Build_tree(l, mid, lson), Build_tree(mid + 1, r, rson);for(int i = 1; i <= 30; i ++) {Tree[i].W[jd] = Tree[i].W[lson] + Tree[i].W[rson];}
}int main() {n = read();Build_tree(1, n, 1);m = read();for(; m; m --) {int opt = read(), l = read(), r = read();if(opt == 2) {int x = read();for(int i = 0; (1 << i) <= x; i ++) {if(((1 << i) & x)) {Tree[i + 1].Sec_G(1, n, 1, l, r);}}} else {LL Answer = 0;for(int i = 1; i <= 30; i ++) {Ans = 0;Tree[i].Sec_A(1, n, 1, l, r);Answer += (1ll * Ans * (LL) pow(2, i - 1));}cout << Answer << "\n";}}return 0;
}

 

转载于:https://www.cnblogs.com/shandongs1/p/9574811.html

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

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

相关文章

记忆力

1、越集中注意力&#xff0c;越难回想起我们的记忆&#xff0c;就像我们看一个字看久了&#xff0c;会慢慢不认识。 2、转载于:https://www.cnblogs.com/LXP-Never/p/9579978.html

物联网初步之电阻性电路分析 第三部分 电路分析方法和电路原理

目录 电阻性电路分析第三章 电路分析方法3-1 支路电流法3-2 网孔电流法3-3 节点电位法3-4本章总结第四章 电路定理4-1 叠加定理戴维南定理和诺顿定理电阻性电路分析 声明&#xff1a;本学习笔记中的部分图片来自于王丽华老师的PPT&#xff0c;感想王老师~~ 第三章 电路分析方法…

《前端JavaScript重点》学习笔记 1-5

JS三座大山&#xff1a;原型和原型连、作用域和闭包、异步和单线程第一篇-----变量类型和计算 参考&#xff1a;https://www.jianshu.com/p/8cb184b26ed1题目&#xff1a;1.JS中使用typeof能得到哪些类型2.何时使用&#xff0c;何时使用3.JS有哪些内置函数4.JS变量按照存储方式…

将页面数据转json存入数据库

SSMlayui前台页面将数据转json存入数据库 最近做了一个添加的功能&#xff0c;页面中的字段并不是和数据库变字段一 一对应的&#xff0c;页面中好几个字段的值要把它们转为json&#xff0c;然后存入数据库表中的一个字段。 1&#xff0c;首先是添加了一个实体类来放这些数据…

简述openstack

大家好&#xff0c;我顾某人又回来了&#xff0c;开学第一更。。。。以下内容均为个人理解和整理&#xff0c;有不对的地方还望dalao指正。。。。。 本文所用图片均已标明来源。 openstack是什么&#xff1f; OpenStack是一个开源的云计算管理平台项目&#xff0c;由几个主要的…

vue+layui获取CheckBox的值

vuelayui获取CheckBox的值 定义一样的name和v-filter 然后对其进行监听。

rocket-console控制台安装

1.下载 github地址&#xff1a;https://github.com/apache/rocketmq-externals 2.选择稳定版本&#xff1a; 3.下载到本地&#xff1a; 环境需求 maven jdk git clone https://github.com/apache/rocketmq-externals.git 4.修改配置&#xff1a; find -name application…

只允许对最后一条记录进行修改

今天做了个小功能想和大家分享一下在我任务描述里有个这样的描述&#xff1a;只能对最后一条记录进行修改。我刚开始我这样想的&#xff0c;每条记录前面都有给他一个radio&#xff0c;然后对你选择的数据去判断他是不是最后添加的那一条&#xff0c;后台发现这样有点难度&…

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

为了加强安全性&#xff0c;MySQL5.7为root用户随机生成了一个密码&#xff0c;在error log中&#xff0c;关于error log的位置&#xff0c;如果安装的是RPM包&#xff0c;则默认是/var/log/mysqld.log。 一般可通过log_error设置 mysql> select log_error; ---------------…

vue复选框CheckBox清空选中的值

最近遇到了这样的一个问题&#xff0c;做了一个添加功能&#xff0c;发现添加了一次记录以后&#xff0c;添加第二次的时候&#xff0c;页面上复选框有我上次选中的值&#xff0c;后来试了很多方法&#xff0c;只有下面这个方法解决了这个问题。上面标出来的是对普通的input进行…

keepalived+lvs搭建高可用负载均衡集群

keepalived与DR模式 主keepalived&#xff08;调度器&#xff09;&#xff1a;192.168.188.128 真实服务器rs1&#xff1a;192.168.188.129 真实服务器rs1&#xff1a;192.168.188.127 VIP &#xff1a;192..168.188.110 yum -y install keepalived (不需要安装ipvsadm&…

添加时,时间格式明明和数据库格式一样,却一直在报错,存不进去

数据库用的date&#xff0c;然后我前台也用的date格式&#xff0c;却存不进去&#xff0c;我还以为是缓存问题&#xff0c;然后一直在清缓存&#xff0c;结果没啥用&#xff0c; 后来在实体类加了DateTimeFormat这个注解&#xff0c;成功解决。

freemarker页面读取时间date类型报错

以前写过一篇添加时间添加失败的问题&#xff0c;现在我又发现了另外一个问题 刚开始我是这样放进页面&#xff0c;然后就报错&#xff0c;说freemarker的类型错误。我就去控制器打印输出这个时间&#xff0c;发现是有值得&#xff0c;但不是yyyy-mm-dd格式的&#xff0c;我数…

关于idea的git账号与电脑的git账号不一致的问题。已解决!

最近发现了一个问题&#xff0c;我进公司&#xff0c;公司给我发的电脑是别的同事用过的&#xff0c;然后上面呢保留了他的git账号&#xff0c;我要继续用这台电脑开发&#xff0c;用他的账号肯定是不行的&#xff0c;然后我就上网搜教程&#xff0c;搜到的教程全部都是让我删除…

codeforces CF986C AND Graph 建圖 dfs

$ \rightarrow $ 戳我進CF原題 C. AND Graphtime limit per test: 4 secondsmemory limit per test: 256 megabytesinput: standard inputoutput: standard outputYou are given a set of size $ m $ with integer elements between $ 0 $ and $ 2^n-1 $ inclusive. Lets build…

HackRF 无线门铃信号录制与重放

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称&#xff1a;开源SDR实验室 HackRF链接&#xff1a;https://item.taobao.com/item.htm?spma1z10.1-c.w4004-13257850194.8.69503d888aIzVL&id526187854860 无线门铃链接&#xff1a;https://item.…

springboot项目和云服务器,以及域名的申请和使用(后续持续更新)

来记录一下做一个springboot项目以及上传至云服务器上过程新建并发布项目注册域名&#xff1a;域名备案发现的问题&#xff1a;在阿里云上面搞了一台个人服务器&#xff0c;当时是双十一打折买的&#xff0c;229好像。有了服务器当然要干点什么&#xff0c;于是做了个springboo…

抢火车票软件的教程

抢火车票软件的教程 1. 先去GitHub上下载源文件testerSunshine。 2. 下载并安装python3.7.4。&#xff08;安装完成在cmd中输入 Python -V,如果出现是的是Python3.7.4&#xff0c;就说明安装成功&#xff09; 3. 控制cmd进入下载的源码的文件夹下&#xff0c;输入 pip3 instal…

The Two Routes CodeForces - 601A(水最短路)

一个完全图 1和n肯定有一条路 不是公路就是铁路 另 另一个跑遍最短路即可 #include <bits/stdc.h> #define mem(a, b) memset(a, b, sizeof(a)) using namespace std; const int maxn 100100, INF 0x7fffffff; int head[maxn], cnt, n, m; int vis[maxn], d[maxn]; b…

hadoop启动

安装完hadoop集群之后&#xff0c;第一次启动之前必须初始化&#xff0c;之后就可以不用再初始化&#xff08;注意&#xff1a;初始化操作只可以一次&#xff09; hdfs namenode -format (hadoop namenode -format) 一键启动 start-all.sh 一键关闭 stop-all.sh node001启动…