Luogu P3917异或序列

题目链接:https://www.luogu.org/problemnew/show/P3917

思路:把序列转换成一颗n+1个节点n条边边权分别为a1 a2 ....an的树(链),每一个区间相当于树上的一条路径,那么问题就转换为求树上任意两点间路径的异或和,令dis[i]为根节点到i的路径异或和,对于两个点u和v,dis[u]^dis[v]对答案的贡献为\sum 2^{i}\left ( dis[u]_i \oplus dis[v]_i = 1 \right ),i为二进制第i位。

           显然,第i位为0和第i位为1 的两个数异或才会对答案有贡献,另cnt[i]为在第i位为1的数量,那么在第i位异或为1的方案数就是\left ( n + 1- cnt_i \right )*cnt_i,那么答案就是\sum 2^i*\left ( n + 1- cnt_i \right )*cnt_i


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值