http://codeforces.com/problemset/problem/339/D

  给出一个序列。每次更改其中一个值然后询问序列的f(),序列的f()定义为: 每相邻两个元素按位或得到长度减半的序列,在对每相邻两个元素按位异或得到长度再次减半的序列。。。。更替的进行按位或/异或,

直至序列长度为1,输出这个数即可。

  op维护当前节点的操作符号,g维护当前区间价值。

  

 #include<bits/stdc++.h>
using namespace std;
#define LL long long
#define ULL unsigned long long
const int maxn=;
int a[maxn];
class sg_tree
{
public:
#define mid ((L+R)>>1)
#define lc (id<<1)
#define rc (id<<1|1) int N,g[maxn<<];
bool op[maxn<<]; void build(int id,int L,int R)
{
if(L==R)
{
scanf("%d",&g[id]);
op[id]=;
return;
}
build(lc,L,mid);
build(rc,mid+,R);
op[id]=(op[lc]^);
if(op[id]==) g[id]=(g[lc]|g[rc]);
else g[id]=(g[lc]^g[rc]);
} void change(int id,int L,int R,int p,int b)
{
if(L==R)
{
g[id]=b;
return;
}
if(p<=mid)change(lc,L,mid,p,b);
else change(rc,mid+,R,p,b);
if(op[id]==) g[id]=(g[lc]|g[rc]);
else g[id]=(g[lc]^g[rc]);
}
} ac;
int main()
{
int n,m,p,b;
scanf("%d%d",&n,&m);
ac.N=(<<n);
ac.build(,,ac.N);
while(m--)
{
scanf("%d%d",&p,&b);
ac.change(,,ac.N,p,b);
printf("%d\n",ac.g[]);
}
return ;
}
/*
2 4
1 6 3 5
1 4
3 4
1 2
1 2 */

CF-339D-线段树的更多相关文章

  1. CF 19D 线段树+set压缩坐标轴+离散化map

    题意: n个操作,在200000*200000的平面上加删点 find 严格在坐标右上角,x最小,再y最小的点 线段树做,区间为离散化后的 X轴坐标 ,维护区间点数 和 最小的 y 值 ( 维护最小y ...

  2. Mango DS Traning #49 ---线段树3 解题手记

    Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38994#overview B.Xenia and B ...

  3. CF 552(div 3) E Two Teams 线段树,模拟链表

    题目链接:http://codeforces.com/contest/1154/problem/E 题意:两个人轮流取最大值与旁边k个数,问最后这所有的数分别被谁给取走了 分析:看这道题一点思路都没有 ...

  4. CF 1023D Array Restoration - 线段树

    题解 非常容易想到的线段树, 还可以用并查集来. 还有一位大神用了$O(n)$ 就过了Orz 要判断是否能染色出输入给出的序列,必须满足两个条件: 1. 序列中必须存在一个$q$ 2. 两个相同的数$ ...

  5. cf 786 B 线段树优化建图

    cf 786 B 链接 CF 思路 n个点,3种建边方式,规模\(O(n^2)\) 线段树优化建图 注意 读入的数据好坑啊,说好的v,u变成了u,v. 两棵树,一棵出,一棵入.线段树的作用只不过是按照 ...

  6. CF 787D Legacy(线段树思想构图+最短路)

    D. Legacy time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  7. CF 666E Forensic Examination 【SAM 倍增 线段树合并】

    CF 666E Forensic Examination 题意: 给出一个串\(s\)和\(n\)个串\(t_i\),\(q\)次询问,每次询问串\(s\)的子串\(s[p_l:p_r]\)在串\(t ...

  8. DFS序+线段树+bitset CF 620E New Year Tree(圣诞树)

    题目链接 题意: 一棵以1为根的树,树上每个节点有颜色标记(<=60),有两种操作: 1. 可以把某个节点的子树的节点(包括本身)都改成某种颜色 2. 查询某个节点的子树上(包括本身)有多少个不 ...

  9. CF #296 (Div. 1) A. Glass Carving 线段树

    A. Glass Carving time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  10. [CF 474E] Pillars (线段树+dp)

    题目链接:http://codeforces.com/contest/474/problem/F 意思是给你两个数n和d,下面给你n座山的高度. 一个人任意选择一座山作为起始点,向右跳,但是只能跳到高 ...

随机推荐

  1. 论文阅读:CNN-RNN: A Unified Framework for Multi-label Image Classification

    CNN-RNN: A Unified Framework for Multi-label Image Classification Updated on 2018-08-07 22:30:41 Pap ...

  2. AndroidStudio Gradle下载速度慢解决方法

    1.在软件里点开工程文件下的 build.gradle 2..在 buildscript 和 allprojects 的 repositories 中分别注释掉 jcenter() 3.在 build ...

  3. es索引维护的常用帖子

    Elasticsearch 新增字段

  4. module.exports 与 exports

    module.exports 与 exports 注意:1 对于要导出的属性,可以简单直接挂到 exports 对象上2 对于类,为了直接使导出的内容作为类的构造器可以让调用者使用 new 操作符创建 ...

  5. 1、HA Cluster基础原理

    Linux Cluster  -->  linux集群类型分三种: LB:负载均衡,LoadBalance HA:双机集群系统,指高可用性集群,High Available HP:Hadoop ...

  6. 【Mysql】外键

    MYSQL数据表建立外键 MySQL创建关联表可以理解为是两个表之间有个外键关系,但这两个表必须满足三个条件 1.两个表必须是InnoDB数据引擎 2.使用在外键关系的域必须为索引型(Index) 3 ...

  7. Unity Shaderlab: Object Outlines 转

    转 https://willweissman.wordpress.com/tutorials/shaders/unity-shaderlab-object-outlines/ Unity Shader ...

  8. Appium-desktop的下载&安装

    下载地址: http://appium.io/ 选择版本 双击安装

  9. 一般删除网页数据和jquery下使用Ajax删除数据的区别

    1. 一般删除网页数据 就是指用户在点击删除的时候,会跳转到DeleteUser.ashx一般处理程序中,并且通过get传参的方式传递一个id的参数,然后在后台处理 <a href='Delet ...

  10. 【C#】调用2.0踩过的坑

    1.初始化[DllImport(“libarcsoft_face_engine.dll”, EntryPoint = “ASFInitEngine”, CallingConvention = Call ...