
容斥
Lynstery
一只蒟蒻
展开
-
[二分+容斥+莫比乌斯函数] BZOJ2440: [中山市选2011]完全平方数
题意求从小到大第k个无平方因子数是多少。(原题面表述略有问题) k<=1e+9题解这题与反演无关,就用到了莫比乌斯函数。 首先肯定二分答案然后验证,现在问题转化为了求[1,mid]中无平方因子数的个数。 怎么求呢?考虑容斥,(p是1~sqrt(m)内的质数集) 总个数=[(pi)2的倍数]−[(pi∗pj)2的倍数]+[(pi∗pj∗pk)2的倍数]−[(pi∗pj∗pk∗pt)2的倍数].原创 2017-07-02 16:36:26 · 467 阅读 · 2 评论 -
[莫比乌斯反演+容斥+分块求和] BZOJ2301: [HAOI2011]Problem b
莫比乌斯反演经典入门题。 首先用容斥,把问题转化为1<=x<=n且1<=y<=m的。 设f(i)f(i) 表示满足gcd(x,y)等于i的有序数对(x,y)的个数。(1<=x<=n且1<=y<=m) 构造F(i)=∑i|df(d)F(i)=\sum_{i|d}f(d),即满足i|gcd(x,y)的有序数对(x,y)的个数。 F(i)F(i)很好求,只有x和y都是i的倍数即可,所以F(i)=⌊原创 2017-07-02 16:39:12 · 607 阅读 · 2 评论 -
[生成函数+容斥+FFT] BZOJ3771: Triple
题意给出n个物品,每个物品有一个价值Ai。可以选一个或两个或三个,求每种可能的总价值的选取方案。 Ai≤40000Ai \le 40000题解题面好有趣…… 考虑构造普通型生成函数A(x),表示取一个的方案。 答案肯定不能直接A3+A2+AA^3+A^2+A,因为一个物品可能被取了多次,考虑如何去重。 取一个就是AA 没错, 取两个是(A2−B)/2(A^2-B)/2,BB是取相同的两个的原创 2017-07-20 13:39:54 · 581 阅读 · 0 评论 -
[容斥] Codeforces#428 (Div. 2) 839D. Winter is here
题意给出一个数集,求所有非空子集的权值和。 定义一个集合的权值为:若所有元素的gcd=1则权值为0,否则权值为所有元素的gcd乘以集合大小。 n≤100000,数字范围≤1000000 n \le 100000,数字范围 \le 1000000题解其实是道挺简单的题目,但是因为之前没做过类似的 gcdgcd 的容斥的题,所以当时没做出来。 有这样一个显然的东西:考虑所有d的倍数的数构成的集合,原创 2017-08-14 21:39:35 · 467 阅读 · 0 评论 -
[组合 容斥] Project Euler 595 Incremental Random Sort
设 S(n)S(n) 表示 nn 的随机排列的期望操作次数。显然有递推式: S(n)=∑i=2nPn,i(S(i)+1), S(n)=∑n−1i=2Pn,i(S(i)+1)+Pn,n1−Pn,nS(n)=\sum_{i=2}^n P_{n,i}(S(i)+1),\ \ S(n)=\frac{\sum_{i=2}^{n-1} P_{n,i}(S(i)+1)+P_{n,n}}{1-P_{n,n}}原创 2017-10-09 15:37:36 · 357 阅读 · 0 评论 -
[容斥 反演] 51nod1678 lyk与gcd
反演… ∑j[gcd(i,j)==1]∗a[j]=∑j∑k|i,k|jμ(k)∗a[j]=∑k|iμ(k)∑ja[k∗j] \sum_{j}[gcd(i,j)==1]*a[j]=\sum_{j} \sum_{k|i,k|j} \mu(k) *a[j]=\sum_{k|i} \mu(k) \sum_{j} a[k*j] 设 g[k]=∑k|ja[j]g[k]=\sum_{k|j} a[j]原创 2017-10-18 15:52:30 · 411 阅读 · 0 评论 -
[容斥+Purfer编码] 51Nod1806 wangyurzee的树
很久以前看过 PurferPurfer 但忘完了…补一补… mm 只有 1717,所以想到暴力容斥。而确定一些节点的度的生成树个数可以直接用 PurferPurfer 解决。 具体来说,若有 cntcnt 个点的度数有约束,分别为v1,v2....vcntv_1,v_2....v_{cnt}。总方案为: (n−2−∑(vi−1))n−cnt∗∏i=1cnt(∑cntk=1(vk−1)vi−1)原创 2017-10-19 09:19:21 · 324 阅读 · 0 评论 -
[容斥] 51Nod1829 函数
简单的容斥 ∑i=0m(−1)i(m−i)n(mi)\sum_{i=0}^m (-1)^i(m-i)^n{m \choose i}#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000005,MOD=1e9+7;typedef long long LL;i原创 2017-11-02 16:45:01 · 377 阅读 · 0 评论