CodeForces - 339D Xenia and Bit Operations
题意:
给定n和m,给你一个包含2^n个数的数组,有m次操作,每次操作先将p位置的数修改,先两两相或使数组减少一半,再两两相异或使数组再减少一半,一直重复这两种操作,直到数组剩余一个元素。
m行操作
p v (假设原数组为a)
将a[p]的值改为v
第一次计算 b1 = a[1] | a[2] , b2 = a[ 3 ] | a[ 4 ] , b3 = a[ 5 ] | a[ 6 ] , b4 = a[ 7 ] | a[ 8 ]
第二次计算 c1 = b1^b2 , c2 = b3^b4
第三次计算 w = c1 | c2
输出 w
思路:
维护一棵线段树,根节点即为最后一个元素的值。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include