Educational Codeforces Round 157 (Rated for Div. 2)D题

本文介绍了EducationalCodeforcesRound157D题的解法,利用异或运算的可交换性和二进制位分析,将问题转化为寻找初始值b1。通过递推找出整个b数组。部分代码解析未给出,待后续更新。
摘要由CSDN通过智能技术生成

上链接

原cf网页链接Educational Codeforces Round 157 (Rated for Div. 2)D题

题目

题目

输入输出范例

输入

4
2 1 2

输出

0 2 3 1

输入

6
1 6 1 4 1

输出

2 3 5 4 0 1

题目解析

这道题我注意到首先由于异或运算的可交换性
异或运算 ⊕ 可交换性:指 a ⊕ b = c , 那么 a ⊕ c = b , 同时 b ⊕ c = a 由此可知,如果知道了 b i 与 b i + 1 是可以通过 b i ⊕ b i + 1 = a i , 由递推可得,只要知道了一个 b 1 , 那么可以通过 b 1 ⊕ a 1 得到 b 2 , 同理可得,用相同的方法能得到所有的 b 数组元素。 异或运算\oplus可交换性:指a\oplus b=c,那么a\oplus c=b,同时b\oplus c=a\\ 由此可知,如果知道了b_i与b_i+1是可以通过b_i\oplus b_i+1=a_i,\\由递推可得,只要知道了一个b_1,那么可以通过b_1\oplus a_1得到b_2,\\同理可得,用相同的方法能得到所有的b数组元素。 异或运算可交换性:指ab=c,那么ac=b,同时bc=a由此可知,如果知道了bibi+1是可以通过bibi+1=ai,由递推可得,只要知道了一个b1,那么可以通过b1a1得到b2,同理可得,用相同的方法能得到所有的b数组元素。
因此问题就转化成了一个找到正确的b1问题。
下面用到了二进制位思维
由于这道题确定了 b 数组是由 0 到 n − 1 的所有数字组成,因此对于 二进制上每一个确定的位,都可以知道 b 数组一共 n 数在这一个位 上有多少个数是 1 多少个是 0 ,因此可以通过先设置 b 1 为 0 ,然后将 由于这道题确定了b数组是由0到n-1的所有数字组成,因此对于\\二进制上每一个确定的位,都可以知道b数组一共n数在这一个位\\上有多少个数是1多少个是0,因此可以通过先设置b1为0,然后将 由于这道题确定了b数组是由0n1的所有数字组成,因此对于二进制上每一个确定的位,都可以知道b数组一共n数在这一个位上有多少个数是1多少个是0,因此可以通过先设置b10,然后将

代码解析

有些地方还没有想明白,暂时先不写这部分,明天再更,累死我了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值