随笔分类 -  FWT

[校内训练20_09_08]AC
摘要:1.求二元组异或的三次方的和。k为位数,nk<=2000000。 n比较小时,直接两两枚举并用bitset计算。 k比较小时,按照位数进行分组,那么考虑贡献(三个位置)分别在一个组、两个组、三个组里的,枚举这些组并用FWT合并。 1 #include<bits/stdc++.h> 2 #define 阅读全文
posted @ 2020-09-08 18:14 GreenDuck 阅读(201) 评论(0) 推荐(0) 编辑
对子集卷积的一些思考
摘要:首先我们要知道 集合占位幂级数:将原始数组的第i个值放在第bitcount(i)行上,此时一维数组就变为二维数组。相关内容可 看下2015年吕凯风的论文。 对于子集卷积,它的正确性在于bitcount(i)+bitcount(j)>=bitcount(i | j),因此如果bitcount(i)+b 阅读全文
posted @ 2020-05-26 06:41 GreenDuck 阅读(144) 评论(0) 推荐(0) 编辑
[集训]FWT基础练习题
摘要:题意 给出n个长度为20的二进制数和数字k,每次询问给出一个二进制数,问从n个数中挑k个数(不能重复)的按位或能包含询问的组合有多少个。数字均小于等于5E5,1s。 思考 强行算出2^20个答案,再O(1)询问。 可知按位或的FWT能够将两个数组融合成新的数组。假设Fk表示挑出k个数字能组成的所有可 阅读全文
posted @ 2019-06-28 20:23 GreenDuck 阅读(413) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示