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

给出n*n的矩阵a,设

ans=i=1nai,bi a n s = ∏ i = 1 n a i , b i

其中, b b 为n的排列,

求对于所有b,ans的和

这题是一道提答题

Solution

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

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

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

证明

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值