【子集卷积】【51nod 1824】染色游戏

Description

原题链接
有 n 个红球, m 个蓝球,从中取出 x 个红球和 y 个蓝球排成一排的得分是 rx⋅by ,其中 r0=b0=1 。
定义 f(t) 表示恰好取出 t 个球排成一排的所有可能局面的得分之和。
两个局面相同,当且仅当这两排球的个数相等,且在对应列位置上的颜色都是相同的。
小Q想知道,有多少 t (1≤t≤n+m) 使得 f(t) 是奇数,你能告诉他满足条件的 t2 之和吗?
对于样例, f(1)=2,f(2)=5,f(3)=13,f(4)=28,f(5)=50,f(6)=60 ,答案是 2^2+3^2=13 。

Analysis

以下讨论均在 mod 2 m o d   2 意义下进行。

f(t)=i=0tribtiCit f ( t ) = ∑ i = 0 t r i b t − i C t i

=i=0tribti[it] = ∑ i = 0 t r i b t − i [ i ⊆ t ]
这一步可以由Lucas定理得出
=itribti = ∑ i ⊆ t r i b t − i
看出这就是一个子集卷积裸题,使用经典的 O(nlog2n) O ( n l o g 2 n ) 算法即可
题外话:此题卡时间卡空间,我写了循环展开。

子集卷积

要求

ct=p,qapbq[pq=t][pq=0] c t = ∑ p , q a p b q [ p ∪ q = t ] [ p ∩ q = 0 ]

ct=pq=tapbq[bitcnt(p)+bitcnt(q)=bitcnt(t)] c t = ∑ p ∪ q = t a p b q [ b i t c n t ( p ) + b i t c n t ( q ) = b i t c n t ( t ) ]
bitcnt(x) b i t c n t ( x ) 表示二进制 x x 中1的个数。如果能把后面的表达式去掉就爽了,直接上集合并卷积就没了。
能不能以枚举后面的bitcnt为代价去掉中括号呢?
f[i][s]=[bitcnt(s)=i]ts[bitcnt(t)=i]at,类似有 g[i][s] g [ i ] [ s ] , h[i][s] h [ i ] [ s ] ,这些都可以直接 O(nlog2n) O ( n l o g 2 n ) dp(FMT)搞出来
那么 h[k][s]=ki=0f[i][s]g[ki][s] h [ k ] [ s ] = ∑ i = 0 k f [ i ] [ s ] ∗ g [ k − i ] [ s ] ,这相当于在每一个 bitcnt b i t c n t 上做集合并卷积,这里的计算显然也是 O(nlog2n) O ( n l o g 2 n )
最后只需要对 h[k][s] h [ k ] [ s ] 进行子集减重(逆FMT), h[bitcnt(s)][s] h [ b i t c n t ( s ) ] [ s ] 就是答案
另一方面,注意
pq=tapbq[bitcnt(p)+bitcnt(q)=bitcnt(t)] ∑ p ∪ q = t a p b q [ b i t c n t ( p ) + b i t c n t ( q ) = b i t c n t ( t ) ]
等价于
p xor q=tapbq[bitcnt(p)+bitcnt(q)=bitcnt(t)] ∑ p   x o r   q = t a p b q [ b i t c n t ( p ) + b i t c n t ( q ) = b i t c n t ( t ) ]

所以可以用类似上面的方法,使用快速沃尔什变换(FWT)。复杂度一致,但是不如FMT好用。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值