----容斥原理
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1686 第K大区间
二分答案,求解时,采用了容斥。#includeusing namespace std;const int MAXN=100100;int a[MAXN],b[MAXN];long long n;long long mul(long long x){ if(x<=0) return 0; return x*(x-1)/2;}long long cal(int x)转载 2016-11-24 01:38:19 · 340 阅读 · 0 评论 -
51nod 1678 lyk与gcd
记录每个i的素因子,以及每个i的倍数j的a[j]之和。容斥一下。由于只考虑是否互质,因此容斥时考虑素因子即可。#includeusing namespace std;const int MAXN=100100;vector fac[MAXN];int sum[MAXN],npri[MAXN],a[MAXN];int cal1(int x){ int ret=0; while原创 2017-02-08 10:13:53 · 351 阅读 · 0 评论 -
BZOJ2301 Problem b
莫比乌斯反演+容斥+分块优化莫比乌斯反演学习资料:POPOQQQ的莫比乌斯反演论文那篇论文提及了莫比乌斯反演的第一种形式,另外一种形式可以看莫比乌斯反演定理证明(两种形式)做这道题时,参考了【莫比乌斯反演】[HYSBZ/BZOJ2301]Problem b这篇题解里,感觉莫比乌斯反演的推算部分,i和d弄错了,但是之后的分块优化以及代码是对的。可能博主没注意。//#inclu原创 2017-07-03 16:53:57 · 296 阅读 · 0 评论 -
51nod 1610 路径计数
因为是无环图,所以可以用记忆化搜索做。可以根据公约数,将图拆成100个子图。由于有重复,所以再加上容斥。#includeusing namespace std;const long long mod=1e9+7;const int MAXM=50050;long long dp[110];int a[MAXM],b[MAXM],c[MAXM];int mat[110][1原创 2017-07-23 16:23:19 · 339 阅读 · 0 评论