
----容斥原理
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1686 第K大区间
二分答案,求解时,采用了容斥。 #include using 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 · 359 阅读 · 0 评论 -
51nod 1678 lyk与gcd
记录每个i的素因子,以及每个i的倍数j的a[j]之和。容斥一下。由于只考虑是否互质,因此容斥时考虑素因子即可。 #include using 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 · 366 阅读 · 0 评论 -
BZOJ2301 Problem b
莫比乌斯反演+容斥+分块优化 莫比乌斯反演学习资料: POPOQQQ的莫比乌斯反演论文 那篇论文提及了莫比乌斯反演的第一种形式,另外一种形式可以看莫比乌斯反演定理证明(两种形式) 做这道题时,参考了【莫比乌斯反演】[HYSBZ/BZOJ2301]Problem b 这篇题解里,感觉莫比乌斯反演的推算部分,i和d弄错了,但是之后的分块优化以及代码是对的。可能博主没注意。 //#inclu原创 2017-07-03 16:53:57 · 314 阅读 · 0 评论 -
51nod 1610 路径计数
因为是无环图,所以可以用记忆化搜索做。 可以根据公约数,将图拆成100个子图。 由于有重复,所以再加上容斥。 #include using 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 · 359 阅读 · 0 评论