线性基的小证明...

这个... 看到一个大佬的证明,没看懂,就自己证了一下...

定律

对于一个集合 S (可重),设它任意个元素(至少一个)异或后能取到的值的集合为 T ,那么 T 中所有元素从 S 中异或得到概率是相等的

证明

我们先将原集合 S 中搞个线性基,那么此时线性基就相当于一个集合 H ,里面包含一些 S 中的元素,那么线性基中就有 |H| 个元素,按照定义, H 可以表示出 \(2^{|H|}-1\) 种权值(减去的一是线性基中默认的 0 ,可以理解为空集)。

然后我们在 S 中取出 H 的补集 G ,那么这个补集可以异或出 \(2^{|G|}\) 个值(可重)

现在我们分两步走:

第一步

我们发现所有的 G 集合能异或得到的值 x 都能在线性基 H 中找到唯一确定的子集(包括空集)使其异或和与 x 相等

然后我们据此可以得到 \(2^{|G|\) 个 S 的子集,使得其中所有子集异或和为 0

第二步

首先我们拿出一个集合 A ,使得 A 的异或和为 x 且不能拆出任意一个异或和为 0 的子集

然后我们在上面得到的 \(2^{|G|}\) 个异或和为 0 的集合中选出任意个集合(方案数为 \(2^{2^{|G|}}\)

最后我们把这些集合并起来,这里的合并指的是出现偶数次的元素丢掉,奇数次的保留,最后我们可以得到一个异或和为 x 的集合



上面的做法看上去貌似是会算重的,但事实上我们发现每种值被算重的次数都是相等的,这样所有取值的选择集合方案数减去算重次数还是相等的

证明总结: 玄学,背结论就好,不然感性理解...

posted @ 2019-05-23 22:32  Jμdge  阅读(457)  评论(0编辑  收藏  举报