CF339D
题目简化与分析:
题目翻译说的还是太复杂了,其实只是给你 $ n $ 个数,奇数位 \(\operatorname{or}\),偶数位 \(\operatorname{xor}\)。
- 会修改某个元素
- 查询修改后运算值
那我们很快就能想到线段树。
毕竟这是个板子。
与普通的板子不一样的就是,加和变成了或或异或。
Solution:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=2e5+50;
const int M=1e5+50;
const int Mod=1e9+7;
inline ll read(){
ll x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
ll n,m;
ll a[N<<2],deep[N<<2];
ll ans[N<<2];
ll ls(int x){return x<<1;}
ll rs(int x){return x<<1|1;}
void push_up(int p){
if(deep[p]&1){
ans[p]=ans[ls(p)]|ans[rs(p)];
}else{
ans[p]=ans[ls(p)]^ans[rs(p)];
}
}
void build(ll p,ll l,ll r){
if(l==r){ans[p]=a[l];return;}
ll mid=(l+r)>>1;
build(ls(p),l,mid);
build(rs(p),mid+1,r);
deep[p]=deep[ls(p)]+1;
push_up(p);
}
void update(ll nx,ll ny,ll l,ll r,ll p,ll k){
if(nx<=l&r<=ny){
ans[p]=k;
return;
}
ll mid=(l+r)>>1;
if(nx<=mid) update(nx,ny,l,mid,ls(p),k);
if(ny>mid) update(nx,ny,mid+1,r,rs(p),k);
push_up(p);
}
int main()
{
n=read(),m=read();
n=(1<<n);
for(int i=1;i<=n;++i) a[i]=read();
build(1,1,n);
for(int i=1;i<=m;++i){
ll x,y;
x=read(),y=read();
update(x,x,1,n,1,y);
printf("%lld\n",ans[1]);
}
return 0;
}
CF339D的更多相关文章
- cf339d Xenia and Bit Operations
Xenia and Bit Operations Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
随机推荐
- FreeFileSync结合任务计划实现T级数据的全量备份和每日十几G数据的增量自动备份
1. 背景 公司现有nas存储中有共计1.8T左右的文件数据(一般是pdf.excel.图片.压缩文件等等格式),因为nas无法做备份:担心后面nas出现故障造成数据丢失,现急需一个解决方案实现如下目 ...
- SQL专家云回溯某时间段内的阻塞
背景 SQL专家云像"摄像头"一样,对环境.参数配置.服务器性能指标.活动会话.慢语句.磁盘空间.数据库文件.索引.作业.日志等几十个运行指标进行不同频率的实时采集,保存到SQL专 ...
- Day01_Java作业
A:选择题 1:下列标识符哪个是合法的(a) A.class B.$abc C.1234 D.Car.taxi B:填空题 1: java源程序的扩展名是( .java ) 2: java程序经编译后 ...
- msvc C++编译链接
C++编译链接 C++编译链接 静态库编译 C RunTimeLibrary 链接过程 动态库编译 场景问题加深理解 总结 静态库编译 C RunTimeLibrary C++是C的超集,C RunT ...
- shell: logging + readlog
logging #!/bin/bash # a small tool for logging sommething # # 1. read your input # 2. save to logs f ...
- 《HelloGitHub》第 88 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- pandas 格式化日期
output_data["ShipDate"] = output_data["ShipDate"].dt.strftime("%Y/%m/%d&quo ...
- Jenkins用户管理(二):不同用户分配不同的任务访问权限
需求:不同用户访问到不同的Jenkins任务. 依赖插件:Role-based Authorization Strategy 1. 插件安装 进入[系统管理]-[插件管理]-[可用插件],搜索Role ...
- 关于3D-AIGC的调研与探讨
0.前言 本文是自己最近在项目上的需要做的一些调研和自己的一些看法,以分享为主. 2D AIGC(文生文.文生图.图生图)在今天大放异彩,产生了许多惊艳的效果,如ChatGPT系列.Imagen.DA ...
- Web攻防--xxe实体注入
web攻防--xxe实体注入 漏洞简介 XML 外部实体注入(也称为 XXE)是一种 Web 安全漏洞,允许攻击者干扰应用程序对 XML 数据的处理.它通常允许攻击者查看应用程序服务器文件系统上的文件 ...