Codeforces-339D. Xenia and Bit Operations
传送门
给定n,m,代表有2n个数,m次询问
每次询问时先将此时序列第p个数值改为b,在求序列的值。序列的值定义如下。
将序列中的第2*i项与2*i-1项或,得到新序列,再把新序列的第2*i项与2*i-1项做异或操作,再将新序列进行或操作,如此往复,最终得到一个数,称为序列的值
线段树水题
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define INF 0x3f3f3f3f 5 using namespace std; 6 typedef long long LL; 7 8 const int maxn = (1 << 17) + 5; 9 int da[maxn * 4]; 10 int n, m; 11 int p, b; 12 13 int n_; 14 15 void build() { 16 int op = 0; 17 int k = n_ + n_ - 2; 18 k = (k - 1) / 2; 19 int t = n; 20 while (k > 0) { 21 if (k == (1 << t) - 2) {op ^= 1;t--;} 22 if (op == 1) { 23 da[k] = da[k * 2 + 1] | da[k * 2 + 2]; 24 } else { 25 da[k] = da[k * 2 + 1] ^ da[k * 2 + 2]; 26 } 27 k--; 28 } 29 } 30 31 void update(int k, int val) { 32 k += n_ - 2; 33 da[k] = val; 34 int op = 0; 35 while (k > 0) { 36 k = (k - 1) / 2; 37 op = 1 - op; 38 if (op == 1) { 39 da[k] = da[k * 2 + 1] | da[k * 2 + 2]; 40 } else { 41 da[k] = da[k * 2 + 1] ^ da[k * 2 + 2]; 42 } 43 } 44 } 45 46 int main() { 47 scanf("%d%d", &n, &m); 48 n_ = (1 << n); 49 for (int i = 0; i < n_; i++) { 50 scanf("%d", da + n_ + i - 1); 51 } 52 build(); 53 while (m--) { 54 scanf("%d%d", &p, &b); 55 update(p, b); 56 printf("%d\n", da[0]); 57 } 58 return 0; 59 }
转载于:https://www.cnblogs.com/xFANx/p/8782870.html
Codeforces-339D. Xenia and Bit Operations相关推荐
- 线段树——思维(Codeforces 339D Xenia and Bit Operations/Billboard HDU - 2795)
Codeforces 339D Xenia and Bit Operations vj地址 题意:给出2的n次方个数,每次将现在这个序列中相邻的两个数运算后合并为一个数,得到一个新的序列,这个新序列的 ...
- [codeforces 339]D. Xenia and Bit Operations
[codeforces 339]D. Xenia and Bit Operations 试题描述 Xenia the beginner programmer has a sequence a, con ...
- Codeforces Round #197 (Div. 2): D. Xenia and Bit Operations(线段树)
题意:定义一个长度2^n的序列{a1, a2-an},序列相邻两个元素或运算之后再进行异或运算再进行或运算(两种运算交替进行)直到只剩下一个数字,这个数字即为序列的值,输入第一行两个数n,m表示序列的 ...
- CodeForces - 1337D Xenia and Colorful Gems(二分)
题目链接:点击查看 题目大意:给出三个序列分别记为 a,b,c,现在要求分别从三个序列中找出 x , y , z ,使得 ( x - y )^2 + ( y - z )^2 + ( y - z )^2 ...
- codeforces 1395C Boboniu and Bit Operations(思维)
题目 题意:给出一个长度为n的数组a,和一个长度为m的数组,要求得到一个长度为n的数组c,使得数组c里面的每个元素执行"或"操作,得到的数组最小,其中c中的每一个元素为a中的每个元 ...
- CF339D Xenia and Bit Operations(线段树)
乱搞线段树,单点修改,每次询问整个表达式的值 不同点在于up函数需要进行修改,根据区间长度不同运算符号也有所不同 代码: #include <bits/stdc++.h> #define ...
- codeforces数学1700[CodeForces 1336B[分类讨论+二分]CodeForces - 1301C[组合计数的减法原理]]
CodeForces 1336B Xenia and Colorful Gems 题目大意:给你nrn_rnr个xix_ixi,ngn_gng个yiy_iyi,nbn_bnb个ziz_izi ...
- C. Divan and bitwise operations
Problem - C - Codeforces C. Divan and bitwise operations time limit per test 1 second memory limit p ...
- CF 2022寒假练习
CF 2022寒假练习 CF_2A Winner 链接 CF_2A Winner 题目大意 有一个游戏,由nnn个玩家参与,每一轮会有一个玩家获得sss点数.游戏最后一轮结束后,点数最多的玩家获胜.如 ...
最新文章
- PyTorch | (2)PyTorch 入门-张量
- java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章
- 多看系统下载_漫画迷手机必备,「漫画之家」全网漫画随意看
- mybatis关联配置(一对多配置)
- c语言出圈游戏课设报告,c语言作业 出圈游戏
- 面向对象六大原则详解
- 摩托罗拉edge S30冠军版再次开售:512GB超大存储 1GB不到5元钱!
- 【转载】谁动了摩卡的奶酪?
- Surface 内置原生壁纸下载
- 高大上的cmd命令行来袭!颜值与内涵兼备
- 手把手教你如何安装水晶易表——靠谱的安装教程
- Routing and Switching Essentials ( 版本 6.00) - RSE 6.0 Chapter 5 Exam
- Android 音视频采集与软编码总结
- 这是我见过最接地气的PCB设计指南了!
- Ubuntu18.04 同一个程序显示两个图标,收藏夹图标不合并问题解决
- Java面试题2017版
- 各个厂商手机不打印log日志的解决方法
- 中国天气预报城市代码
- wxpython后台线程更新界面控件方法
- 数据采集之全埋点数据采集分析方法的一些整理
热门文章
- 开始用Tornado:从Hello World开始
- 易语言窗口c_句柄取进程名,易语言窗口句柄取进程文件名源码
- rust怎么关阳光指令_我家也有庭院多好,伸缩阳光房装上,能休闲能当车库,还不算违建...
- 别让for循环毁了你的程序(二)
- php7 编译 pdo mysql_php7 编译 pdo_mysql 问题, [mysql_driver.lo] Error 1
- MMKV_微信MMKV源码分析(一) | 整体流程
- 一个简单字符型设备驱动及其测试
- 【Flink】Disconnect from JobManager responsible for
- 【Elasticsearch】如何构建一个好的电商搜索引擎?
- 【Kafka】kafka 客户端 控制台 flink 都无法消费的情况