网上管这玩意叫SoS,但我寻思这不就是FWT吗,不过容斥的思想还是可以的。
写了点水题
CF1208F
先预处理$ F(x) =\max{ \arg ((d_j \ and \ d_k ) = x )} $ ,然后枚举一个\(d_i\)看它最大能或出来多少。如果是异或的话其实是可以直接上Trie树上搜的,但是由于是或,于是需要对\(F\)做FWT(超集和),然后模拟Trie树上的过程,从高到低枚举每一位填一,这时候合法的判断就可以通过\(F\)来判了。
CF383E
正难则反,考虑用总的把没有元音的减掉,于是就是求子集和。
CodeChef Covering Sets
???做与卷积再求子集和???,为什么放了个板题
CF449D
先求与出来是自己的超集的方案数,把超集再减掉就行
CodeChef Jersey number
先预处理出来每种字符集状态覆盖了多少个区间,这一部就是枚举右端点处理所有的左端点即可,状态最多变字符集大小次,存一下每种字符最后出现的位置就行。
然后直接做个与卷积,自己卷自己,把空集那项去掉就没了
CodeChef Beautiful Sandwich
nb
删字符会导致连续段的拼接,贡献形式是\(2xy\),把这个贡献摊到左边的\(x\)个字符上一个一个计算,处理连续段的拼接同上题。然后求个子集和就行。
Pepsi Cola
考虑求出或出来是x的方案数,板板。
CodeChef Strange Functions
这个玩意看起来只能按照分层的那种写,按柿子写就行
ARC100
记录子集的最大值和次大值,由于是小于等于,所以要去个前缀max
CF772D
考虑一下怎么算和的平方就行了,由于是所有子集的和,所以要带个二的幂的系数
标签:超集,枚举,FWT,SoS,子集,乱草,CodeChef From: https://www.cnblogs.com/Delov/p/16898204.html