2019ICPC南昌邀请赛 Sequence
题意:给出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的更多相关文章
- 2019ICPC南昌邀请赛网络赛 I. Max answer (单调栈+线段树/笛卡尔树)
		题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum.最小前缀lsum.最小后缀rsum,枚举每个数a[i] ... 
- 计蒜客 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 ... 
- 2019icpc南昌邀请赛B Polynomial (拉格朗日插值法)
		题目链接:https://nanti.jisuanke.com/t/40254 题意: 思路: 这题要用到拉格朗日插值法,网上查了一下,找到一份讲得特别好的: -------------------- ... 
- 2019icpc南昌邀请赛F(线段树)
		题目链接:https://nanti.jisuanke.com/t/40258 题意:给长为n的数组a,有m次操作,包括单点修改和查询F(l,r),其值为所有f(i,j)的异或和,l<=i< ... 
- 2019南昌邀请赛网络预选赛 M. Subsequence
		传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ... 
- 南昌邀请赛网络赛 D.Match Stick Game(dp)
		南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ... 
- 线段树+单调栈+前缀和--2019icpc南昌网络赛I
		线段树+单调栈+前缀和--2019icpc南昌网络赛I Alice has a magic array. She suggests that the value of a interval is eq ... 
- icpc南昌邀请赛 比赛总结
		上周末,我参加了icpc南昌区域赛邀请赛,这也是我的第一次外出参赛. 星期五晚上,在6个小时的火车和1个小时的公交后,我们终于抵达了江西师范大学,这次的比赛场地.江西师范大学周围的设施很齐全,各种烧烤 ... 
- 2019 ICPC南昌邀请赛网络赛比赛过程及题解
		解题过程 中午吃饭比较晚,到机房lfw开始发各队的账号密码,byf开始读D题,shl电脑卡的要死,启动中...然后听到谁说A题过了好多,然后shl让blf读A题,A题blf一下就A了.然后lfw读完M ... 
随机推荐
- 计算机考研复试真题 a+b(大数加法)
			题目描述 实现一个加法器,使其能够输出a+b的值. 输入描述: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出描述: 可能有多组测试数据,对于每组数据, 输出a+b的值. 示例1 输入 ... 
- Java并发编程实战(5)- 线程生命周期
			在这篇文章中,我们来聊一下线程的生命周期. 目录 概述 操作系统中的线程生命周期 Java中的线程生命周期 Java线程状态转换 运行状态和阻塞状态之间的转换 运行状态和无时限等待状态的切换 运行状态 ... 
- redis 5.0.5 安装
			redis 5.0.5 安装脚本: #!/bin/bash cd /data/src/ test -e tcl8.6.9-src.tar.gz || wget http://downloads.sou ... 
- 【Linux】NFS相关小问题
			NFS一些小问题: 1. 由于实验环境中,给了rw权限,但是执行的时候,还是提示Permission denied 于是查看nfs服务端,查看/etc/exports文件是否配置有问题 网上很多人配置 ... 
- 【ORACLE】11g rac+dg
			首先感谢群友分享的文档,在这里先感谢哆啦B梦,非常感谢 该文档主要指导如何利用现有的RAC环境搭建一套RAC与单实例的DG的环境 ============================主机配置信息 ... 
- 集成多种协议、用于 USB-A 和 TYPE-C 双端口输出的快充协议芯片IP2726
			1. 特性 支持 1A1C 支持 USB-A 和 TYPE-C 双端口输出 单口输出支持全部快充协议 双口同时插入时降压到 5V 快充规格 集成 QC2.0/QC3.0/QC4/QC4+输 ... 
- 订阅者模式,公众号、B站、快手用了都说好!
			大家好,今天和大家来聊一个新的设计模式--订阅者模式. 这个模式在我们的生活当中非常常见,可以说是几乎所有的媒体平台都用或多或少地用到了这个模式.比如公众号,我们来仔细梳理一下公众号这个平台当中的整个 ... 
- spring data JPA 使用EntityentiListeners实现数据审计功能设计
			当系统中有审计需求时,特别是需要对某些数据进行动态监控时,我们可以使用EntityentiListeners来实现,当然这是基于使用JPA而不是mybatis的情况下. 当前我们的需求场景: 1.需要 ... 
- Python+Selenium+Unittest实现PO模式web自动化框架(1)
			1.什么是PO模式? PO是Page Object的缩写 PO模式是自动化测试项目开发实践的最佳设计模式之一,讲页面定位和业务操作分开,也就是把对象的定位和测试脚本分开,从而提供可维护性. 主要有以下 ... 
- java画海报二维码
			package cn.com.yitong.ares.qrcode; import java.awt.BasicStroke;import java.awt.Color;import java.awt ... 
