SoS乱草

网上管这玩意叫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

考虑一下怎么算和的平方就行了,由于是所有子集的和,所以要带个二的幂的系数

posted @ 2022-11-17 16:16  Delov  阅读(60)  评论(1编辑  收藏  举报