
数学-容斥原理
Endless_Way
这个作者很懒,什么都没留下…
展开
-
BZOJ 1853 [Scoi2010]幸运数字
容斥原理。记[l,r]内6的倍数的数的个数为集合S1,8的倍数的为集合S2,66的倍数为集合S3,68的倍数为集合S4......那么答案就是所有这些集合的并集大小。记[l,r]内6的倍数的数的个数为集合S_1, 8的倍数的为集合S_2,66的倍数为集合S_3,68的倍数为集合S_4......那么答案就是所有这些集合的并集大小。可以用容斥定理解决,但需要一些优化。先筛去一些是已有数的倍数的数,如因原创 2016-08-28 17:56:11 · 548 阅读 · 0 评论 -
BZOJ 4455 & UOJ 185 [ZJOI2016]小星星
容斥原理+树形DP首先有一个暴力的想法,f[i][j][sta]表示树中i与图中k对应,i的子树与sta(状压)对应,然后大力转移。这需要枚举子集,复杂度约O(n2∗3n)O(n^2*3^n)考虑枚举状态sta表示图中可用点范围,记f[i][j]表示i和j对应,但对应可以重复,即可以不一一对应。最终答案就是与全集一一对应的方案数。考虑容斥,记SnS_n表示不使用图中节点n的方案,显然这些都是不合理的原创 2016-09-10 11:47:53 · 445 阅读 · 0 评论 -
BZOJ 2440 [中山市选2011]完全平方数
二分+莫比乌斯函数+容斥原理方便起见,我们描述完全平方数及其倍数为不合法数,其余为合法数。二分答案x,找小于x的合法数有多少即可。然而这并不好找,我们来找不合法数。一个合数的平方的倍数一定也能写成一个质数的平方的倍数,因此只考虑质数的平方。一个完全平方数i2i^2,它的贡献⌊xi2⌋\left \lfloor \frac{x}{i^2} \right \rfloor。然而这样算是会算重的,比如36=原创 2017-01-06 23:31:20 · 310 阅读 · 0 评论 -
BZOJ 3622 已经没有什么好害怕的了
DP+容斥然而这题还是令我很害怕。 最值问题的DP一般考虑排序之后从小到大或从大到小,一个一个地考虑。对于这题,对A,B排序,记next[i]=j,表示最大的j满足B[j] < A[i],不难想到方程f[i][j]表示做到A的第i个,其中已经有j对满足A>B,然后转移 f[i][j] = f[i-1][j] + f[i-1][j-1] * (next[i] - j + 1)但是这显然是错的,因为原创 2017-01-18 20:51:01 · 392 阅读 · 0 评论 -
51Nod 1677 treecnt
容斥按照套路,按边考虑。一条边能贡献的答案是选的k个点分居两侧的方案数。发现这东西很难求。于是转成容斥求k个点归于一侧的方案数。#include<cstdio>#define N 100005#define MOD 1000000007using namespace std;namespace runzhe2000{ typedef long long ll; int fa原创 2017-03-03 15:46:39 · 253 阅读 · 0 评论 -
BZOJ 4596 [Shoi2016]黑暗前的幻想乡
容斥原理+矩阵树定理要求每一个公司都恰好选一条边出来,计数生成树。不太好做,考虑这个问题的反面,即存在一些公司选了多条边出来,然而这样也不太好做。这个反面等价于有一些公司没选,就好做了。话说我也不知道为什么 O(2n∗173)O(2^n*17^3) 能过。#include<cstdio> #include<cstring>#include<algorithm>#define mkp(_i, _原创 2017-04-08 19:51:09 · 401 阅读 · 0 评论