CodeForces 839 D.Winter is here:莫比乌斯反演在容斥上的应用,好题!

前言:

题解在这位大佬这看的,写的好.

这道题给出了莫比乌斯反演在容斥上的一个应用。

题目大意:

给你一个长度为 n n n的数组 a i a_i ai,让你求出所有子集 S S S的贡献和: ∣ S ∣ ∗ g c d ( a i   ∣   a i ∈ S ) ∗ [ g c d ( a i   ∣   a i ∈ S ) ≠ 1 ] |S|*gcd(a_i\ |\ a_i\in S)*[gcd(a_i\ |\ a_i\in S)\neq1] Sgcd(ai  aiS)[gcd(ai  aiS)=1].

n ≤ 1 e 6 , a i ≤ 2 e 6 n \leq 1e6,a_i \leq 2e6 n1e6,ai2e6

题目思路:

有一个直接容斥的做法。类似我的 S O S d p SOSdp SOSdp博客中某道题一样。这里不展开。但是思想是类似的.

f ( k , d ) f(k,d) f(k,d)代表选出 k k k个数且 g c d = d gcd=d gcd=d的方案数.令 F ( k , d ) F(k,d) F(k,d)代表选出 k k k个数且都含有约数 d d d的方案数.

显然有 F ( k , d ) = ∑ d ∣ i f ( k , i ) F(k,d)=\sum_{d|i}^{}f(k,i) F(k,d)=dif(k,i)

这里直接反演: f ( k , d ) = ∑ d ∣ i μ ( i d ) F ( k , i ) f(k,d)=\sum_{d|i}^{}\mu(\frac id)F(k,i) f(k,d)=diμ(di)F(k,i)

然后直接推导即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值