【线段树】COGS 1427. zwei
2013-10-27 00:05
246 查看
题目链接:http://cojs.tk/cogs/problem/problem.php?pid=1427
分析:
线段树样板题。
单点修改,区间求异或。
代码:
分析:
线段树样板题。
单点修改,区间求异或。
代码:
#include<cstdio> #include<iostream> #define lson l,m,rt << 1 #define rson m+1,r,rt <<1|1 using namespace std; const int maxn = 100010; int a[maxn<<2]={0},n,m,ll,rr; void build(long long l,long long r,long long rt) { if (l==r) { scanf("%d",&a[rt]); return; } long long m=(l+r)>>1; build(lson); build(rson); a[rt]=(a[rt<<1]^a[rt<<1|1]); } void update(long long l,long long r,long long rt) { if (l==r) { a[rt]=rr; return; } long long m=(l+r)>>1; if (ll <= m) update(lson); else update(rson); a[rt]=(a[rt<<1]^a[rt<<1|1]); } long long query(long long l,long long r,long long rt) { if (ll <=l && rr >= r) {return a[rt];} long long m = (l + r) >> 1; long long ret = 0; if (ll<= m) ret ^= query(lson); if (rr> m) ret ^= query(rson); return ret; } int main() { freopen("zwei.in","r",stdin); freopen("zwei.out","w",stdout); cin>>n>>m; build(1,n,1); for (long long i=1;i<=m;i++) { int x; cin>>x>>ll>>rr; if (x==0) update(1,n,1); else cout<<query(1,n,1)<<endl; } return 0; }
相关文章推荐
- acd - 1427 - Nice Sequence(线段树)
- ACdream 1427—— Nice Sequence——————【线段树单点更新,区间查询】
- COGS247. 售票系统[线段树 RMQ]
- 【COGS-2638】数列操作ψ 线段树
- [COGS2554][SYZOJ247][福利]可持久化线段树
- COGS 265线段覆盖[线段树]
- 【COGS】256 [POI2001] 金矿 线段树
- ACdream 1427 Nice Sequence(线段树)
- COGS 1612. 大话西游 (线段树)
- TYVJ 1427 线段树的基本操作
- cogs 859 数列【线段树】
- tyvj 1427 小白逛公园(线段树中级,单点修改,动态最大连续和)
- TYVJ 1427 线段树的基本操作
- AHOI 2009 行星序列 BZOJ 1798 COGS 1272 线段树模板题:加、乘标记
- acd - 1427 - Nice Sequence(线段树)
- COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)
- 【BZOJ 1901】Zju2112 Dynamic Rankings &&【COGS 257】动态排名系统 树状数组套线段树
- COGS 775. 山海经 【线段树】
- AC日记——[福利]可持久化线段树 cogs 2554
- COGS.1272.[AHOI2009]行星序列(线段树 区间加、乘、求和)