【GDOI 2016模拟3.14】garrafeira

题目描述

一个长度为 n 的序列 {an} ,每个元素 ai[l,r] ,任取子序列 {p0,p1,,pk} ,求得这个序列 {an} 的权值 pap0ap1apk

问对于所有可能的序列 {an} V 的不同取值共有多少种可能。

T 组数据。

T105,n102,1lr1018

分析

首先先考虑“子序列异或和”这东西怎么计。

考虑将每一位分开统计。
首先这一位对答案能做出贡献,当且仅当序列中存在一个数此位为 1
不妨记有 odd 个数此位为 1 ,有 nr 个数此位为 0
那么首先 0 选还是不选并不会对答案造成影响。
其次,当 odd 个数中选出奇数个,就会在这位给答案贡献 1
又考虑组合数的奇数项与偶数项之和相等,因此这里 0 1 的可能性是相同的。
总共加起来的总贡献就是 2n1(a0 or a1 oror an)

问题转化为问 n 个数在范围内任取,问他们的 or 和的不同取值可能。

未完待续。

你可能感兴趣的:(【GDOI 2016模拟3.14】garrafeira)