【容斥妙用】快速求积的和

给出n*n的矩阵a,设

ans=i=1nai,bians=∏i=1nai,bi

其中,bb为n的排列,

求对于所有b,ans的和

这题是一道提答题

Solution

这里给出O(2nn)的解法(主要是空间小)
最终的答案为:

Ans=SSn(1)n|S|i=1nj=1nai,j[jS]Ans=∑S∈Sn(−1)n−|S|∏i=1n∑j=1nai,j∗[j∈S]

SnSn为1~n的集合
最后一个可以预处理一半,再O(2)O(2)出解,
总复杂度为O(2nn)O(2nn)

证明

后面的式子可以看成是不同的选取方案的和,
合法的方案一定在容斥系数为1的时候出现且只出现一次(全集),
剩下不合法的,一定会被2n|x|2n−|x|个S包含,也就是出现的次数一定是2n|S|2n−|S|次,且容斥系数一半为1,一半为-1,
所有,式子最后的值就只有合法的方案的贡献,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值