题意:给出n个点的权值,m次操作,操作为1时为询问,每次询问给出 l 和 r ,求 f(l,r)。操作为0时为修改权值。
f(l,r)=f(l,l)⊕f(l,l+1)⊕⋯⊕f(l,r)⊕f(l+1,l+1)⊕⋯f(l+1,r)⊕⋯⊕f(r,r)F(l,r)=f(l,l)⊕f(l,l+1)⊕⋯⊕f(l,r)⊕f(l+1,l+1)⊕⋯f(l+1,r)⊕⋯⊕f(r,r)。

题解:首先多写算几个 l 到 r,可以发现当 r - l 时奇数的时候,f(l,r)为0;当 r - l 为偶数时,就是 l⊕l+2⊕⋯⊕r;区间异或可以用两个树状数组来完成,一个记录奇数位的前缀异或,一个记录偶数为的前缀异或。修改某个点权值时可以用式子a^b^b=a来更新权值。树状数组异或只要把+改成^就好了。

 1 #include<bits/stdc++.h>
2 #define ll long long
3 #define pb push_back()
4 #define ft first
5 #define sd second
6 using namespace std;
7
8 int a[100100],c[100100],d[100100],n,m;
9
10 int lowbit(int x)
11 {
12 return x&(-x);
13 }
14
15 int sum(int x,int a[]) //区间查询
16 {
17 int s=0;
18 while(x>0)
19 {
20 s^=a[x];
21 x-=lowbit(x);
22 }
23 return s;
24 }
25
26 void update(int x,int d,int a[]) //单点更新
27 {
28 while(x<=n)
29 {
30 a[x]^=d;
31 x+=lowbit(x);
32 }
33 }
34
35 inline int read() {
36 char ch = getchar();
37 while (ch < '0' || ch > '9') ch = getchar();
38 int x = 0;
39 while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
40 return x;
41 }
42
43 int main()
44 {
45 int t;
46 t=read();
47 int k=1;
48 while(t--){
49 memset(c,0,sizeof(c));
50 memset(d,0,sizeof(d));
51 cout<<"Case #"<<k++<<": "<<endl;
52 n=read(),m=read();
53 for(int i=1;i<=n;i++) {
54 a[i]=read();
55 if(i&1) update(i/2+1,a[i],c);
56 else update(i/2,a[i],d);
57 }
58 while(m--){
59 int z,x,y;
60 z=read(),x=read(),y=read();
61 if(z==0){
62 if(x&1) update(x/2+1,a[x]^y,c);
63 else update(x/2,a[x]^y,d);
64 a[x]=y;
65 }
66 else{
67 if((y-x)&1) printf("0\n");
68 else{
69 int ans;
70 if(x&1) ans=sum(x/2,c)^sum(y/2+1,c);
71 else ans=sum(x/2-1,d)^sum(y/2,d);
72 printf("%d\n",ans);
73 }
74 }
75 }
76 }
77 return 0;
78 }

2019ICPC南昌邀请赛 Sequence的更多相关文章

  1. 2019ICPC南昌邀请赛网络赛 I. Max answer (单调栈+线段树/笛卡尔树)

    题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum.最小前缀lsum.最小后缀rsum,枚举每个数a[i] ...

  2. 计蒜客 38228. Max answer-线段树维护单调栈(The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer 南昌邀请赛网络赛) 2019ICPC南昌邀请赛网络赛

    Max answer Alice has a magic array. She suggests that the value of a interval is equal to the sum of ...

  3. 2019icpc南昌邀请赛B Polynomial (拉格朗日插值法)

    题目链接:https://nanti.jisuanke.com/t/40254 题意: 思路: 这题要用到拉格朗日插值法,网上查了一下,找到一份讲得特别好的: -------------------- ...

  4. 2019icpc南昌邀请赛F(线段树)

    题目链接:https://nanti.jisuanke.com/t/40258 题意:给长为n的数组a,有m次操作,包括单点修改和查询F(l,r),其值为所有f(i,j)的异或和,l<=i< ...

  5. 2019南昌邀请赛网络预选赛 M. Subsequence

    传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...

  6. 南昌邀请赛网络赛 D.Match Stick Game(dp)

    南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...

  7. 线段树+单调栈+前缀和--2019icpc南昌网络赛I

    线段树+单调栈+前缀和--2019icpc南昌网络赛I Alice has a magic array. She suggests that the value of a interval is eq ...

  8. icpc南昌邀请赛 比赛总结

    上周末,我参加了icpc南昌区域赛邀请赛,这也是我的第一次外出参赛. 星期五晚上,在6个小时的火车和1个小时的公交后,我们终于抵达了江西师范大学,这次的比赛场地.江西师范大学周围的设施很齐全,各种烧烤 ...

  9. 2019 ICPC南昌邀请赛网络赛比赛过程及题解

    解题过程 中午吃饭比较晚,到机房lfw开始发各队的账号密码,byf开始读D题,shl电脑卡的要死,启动中...然后听到谁说A题过了好多,然后shl让blf读A题,A题blf一下就A了.然后lfw读完M ...

随机推荐

  1. Linux下安装svn教程

    前言 最近买了新服务器,准备开始弄一些个人的开源项目.有了服务器当然是搞一波svn啦.方便自己的资料上传和下载.于是在此记录搭建svn的方式,方便以后直接使用. 安装 使用yum源进行安装,十分的方便 ...

  2. 【Java基础】Java11 新特性

    Java11 新特性 新增字符串处理方法 新增方法: 判断字符串是否为空白 " ".isBlank(); // true 去除首尾空白 " Javastack " ...

  3. MySQL where 条件字句查询

    where 条件字句 搜索条件可由一个或多个逻辑表达式组成 , 结果一般为布尔值 逻辑运算符 运算符 语法 描述 and && a and b a && b 逻辑与 两 ...

  4. 【MySQL】DDL数据定义语言的基本用法create、drop和alter(增删改)

    DDL 的基础语法 文章目录 DDL 的基础语法 对数据库进行定义 对数据表进行定义 创建表结构(数据表) 设计工具 修改表结构 小结 参考资料 简单复习一波 SQL必知必会 DDL 的英文全称是 D ...

  5. 【Web】CSS实现鼠标悬停实现显示与隐藏 特效

    鼠标悬停实现显示与隐藏特效 简单记录 - 慕课网 Web前端 步骤四:鼠标悬停实现显示与隐藏特效 初步掌握定位的基本使用,以及CSS选择器更高级的运用,完成一个网页中必会的鼠标经过隐藏显示特效. 实现 ...

  6. 【葵花宝典】All-in-One模式安装KubeSphere

    1.准备 Linux 机器 2.google api受限下载 KubeKey export KKZONE=cn curl -sfL https://get-kk.kubesphere.io | VER ...

  7. Java高并发与多线程(三)-----线程的基本属性和主要方法

    今天,我们开始Java高并发与多线程的第三篇,线程的基本属性和主要方法. [属性] 编号(ID) 类型long 用于标识不同的线程,编号唯一,只存在java虚拟机的一次运行 名称(Name) 类型St ...

  8. MySQL下载与安装教程

    一,下载篇 1,首先访问MySQL官网下载页,https://dev.mysql.com/downloads/mysql/ 如果是MAC系统,操作系统请选择macOS,Windows则选择Window ...

  9. Py其他内置函数,文件修改

    其他内置函数 1.abs函数,取绝对值 print(abs(-1)) 2.all函数,判断可迭代对象是否全为真,有假直接假 假:0,'',None print(all([1,2,'1'])) prin ...

  10. Linux、JDK、Netty中的NIO与零拷贝

    一.先理解内核空间与用户空间 Linux 按照特权等级,把进程的运行空间分为内核空间和用户空间,分别对应着下图中, CPU 特权等级分为4个,Linux 使用 Ring 0 和 Ring 3. 内核空 ...