Icefox的博客

生活不止眼前的苟且,还有诗和远方。

bzoj4558 [JLoi2016]方(容斥原理,计数,Hash)

这容斥真是写的我心态爆炸… 考虑用至少0个坏点的-至少1个坏点的+至少两个坏点的-至少三个坏点的+至少四个坏点的。 我们发现对于斜着的正方形,可以直接在框住它的大正方形处计数,边长为i的大正方形内就有i个正方形。 且我们发现每个点出现且仅出现在一个正方形上。因此对于至少一个坏点的正方形,我们...

2018-07-13 23:27:23

阅读数 108

评论数 0

bzoj2986 Non-Squarefree Numbers(Mobius函数+容斥+二分答案)

其实和bzoj2440一模一样。 就是利用Mobius函数来容斥就好了 #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f...

2018-06-22 16:57:52

阅读数 54

评论数 0

bzoj2393 Cirno的完美算数教室(容斥原理+dfs)

和bzoj1853基本一模一样,因为是2和9还更少了些合法数字… #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #de...

2018-06-22 16:25:00

阅读数 86

评论数 0

bzoj1853 [Scoi2010]幸运数字(容斥原理+dfs)

我们发现纯幸运数字只有2046个,而去掉倍数之后只剩了943个。 我们直接容斥,暴力枚举就好了qaq 注意剪枝,从大到小枚举,求lcm避免爆ll等玄学技巧就好了qaq #include <bits/stdc++.h> using namespace...

2018-06-22 16:21:25

阅读数 104

评论数 0

bzoj3622 已经没有什么好害怕的了(dp+容斥原理)

首先设a组糖果比药片大,b组药片比糖果大,然后要求a-b=K,a+b=n,显然有a=(n+K)/2 于是就是求恰好a组糖果比药片大的方案数。 我们dp处理出至少j组的”方案数” 首先把a,b数组均排序,处理出每个糖果i大于的药片个数w[i],然后f[i][j]表示前i个糖果,选出了j组符合条...

2018-06-20 17:20:42

阅读数 65

评论数 0

bzoj3812 主旋律(图论+状压dp+容斥原理)

题目给出一个 n 个点,m 条边的有向图,要求求出删掉一些边以后,整个图强联通的方案数,其中 n≤15,m≤n(n−1) 好难啊qaq 题解传送门:portal 实现上也有一些技巧要注意qaq #include <bits/stdc++.h> us...

2018-06-20 15:14:03

阅读数 89

评论数 0

bzoj4455 [Zjoi2016]小星星(容斥原理+状压枚举+树形dp)

首先我们有一个树形状压dp的想法,f[x][i][S]表示x节点,匹配原图的i节点,子树匹配了原图S状态的点的方案数,这样可以保证一一对应,不重不漏,可惜复杂度高达O(n33n)O(n33n)O(n^33^n),无法承受。 我们考虑容斥,用树上n个点匹配原图n个点的所有方案-匹配原图n-1个点的...

2018-06-20 10:03:38

阅读数 64

评论数 0

bzoj4710 [Jsoi2011]分特产(容斥原理+组合数学)

题目要求有0个人有0个。 我们枚举有i个人有0个来容斥,其余的人随意分,用插板法来计算方案数。 Ans=∑i=0n−1(−1)iCin∏j=1mCn−i−1aj+n−i−1Ans=∑i=0n−1(−1)iCni∏j=1mCaj+n−i−1n−i−1Ans=\sum\limits_{i=0}^{...

2018-06-20 08:18:13

阅读数 104

评论数 0

bzoj5306 [Haoi2018]染色(容斥原理+ntt)

一个不会数数的老年咸鱼选手的学习经历x 首先我很快的得到了一个式子:Cim∗n!(s!)i∗(n−is)!∗(m−i)n−isCmi∗n!(s!)i∗(n−is)!∗(m−i)n−isC_m^i*\frac{n!}{(s!)^i*(n-is)!}*(m-i)^{n-is} 但是我说不出它的意义...

2018-06-19 22:55:56

阅读数 111

评论数 0

bzoj2830/luogu3830 随机树(期望与概率dp)

首先第一问,我们设f[i]f[i]f[i]表示i个叶子的树的叶子平均深度的期望 那么有转移f[i]=f[i−1]∗(i−1)−f[i−1]+(f[i−1]+1)∗2if[i]=f[i−1]∗(i−1)−f[i−1]+(f[i−1]+1)∗2if[i]=\frac{f[i-1]*(i-1)-f[i...

2018-06-15 16:19:57

阅读数 124

评论数 0

bzoj4767 两双手(dp+容斥+组合数学)

在二维平面上,你一开始在(0,0),给定两个向量,问你有多少种不经过坏点的方式到达(x,y)。 对于每一个点都求出需要走几个向量1,几个向量2,显然是唯一的。如果不合法直接跳过。 然后就转化成了类似上一题的模型。dp+容斥+组合数学解决。 #include <bits/...

2018-06-01 14:29:58

阅读数 102

评论数 0

bzoj3782 上学路线(dp+容斥+组合数学+Lucas+CRT)

把终点也视为一个坏点的话,f[i]表示到达坏点i且不经过其他坏点的方案数。直接计算f[i]比较困难,考虑容斥。 可以通过组合数学方便的得到从一个点到另一个点的总方案数。那么我们可以再枚举经过的第一个坏点来减去不合法的方案。 这里算组合数需要Lucas定理,1019663265=3*5*6793...

2018-06-01 11:45:51

阅读数 83

评论数 0

bzoj5366 [Lydsy1805月赛]代码派对(容斥+差分+二维前缀和)

给定n个矩形,问至少覆盖了一个公共点的三元组(i,j,k)(i< j< k)有多少个。 矩形的交还是矩形。我们先差分+二维前缀和算出每一个位置被覆盖的次数bijbijb_{ij},答案就是∑C3bij∑Cbij3\sum\limits C_{b_{ij...

2018-05-28 12:00:51

阅读数 346

评论数 0

bzoj3930 [CQOI2015]选数(容斥+递推+数论)

首先我们有:在[l,R]中选若干不完全相同的数,他们的gcd<=R-L。反证即可。 我们设f[i]表示gcd恰好为K*i的个数。(选若干不完全相同的数),考虑容斥计算,倒着推即可。 f[i]=(R-L)^n-(R-L)-f[i*j] (R=r/(ki),L=(l-1)/(ki)) 最...

2018-05-06 21:29:03

阅读数 84

评论数 0

bzoj4011 [HNOI2015]落忆枫音(拓扑序dp+容斥原理+朱刘算法)

大爷题解传送:http://blog.csdn.net/popoqqq/article/details/45194103

2018-02-01 14:18:40

阅读数 194

评论数 0

bzoj2440 [中山市选2011]完全平方数(二分答案+莫比乌斯反演)

类似vijos1889。

2017-10-13 11:43:26

阅读数 184

评论数 0

vijos1889 天真的因数分解(莫比乌斯反演+二分答案)

求第k个mu为0的数,k<=1e10,所以O(n)肯定也挂。考虑不合格的数,就是含有一个平方因子的数。设F(x)表示1~x中不合格的数,则根据容斥原理,利用莫比乌斯函数,我们可以得到F[x]=−∑i=2x√⌊x/i2]∗μ(i)F[x]=-\sum\limits_{i=2}^{\sqrt x...

2017-10-11 16:02:34

阅读数 183

评论数 0

bzoj2301 [HAOI2011]Problem b(求gcd==k的个数)(莫比乌斯反演+容斥原理)

首先我们搞掉下界,怎么搞呢,用容斥原理即可。(看做矩形区间),然后我们需要求∑x=1n∑y=1ngcd(x,y)==k\sum\limits_{x=1}^n\sum\limits_{y=1}^ngcd(x,y)==k。 ∑x=1⌊n/k⌋∑y=1⌊m/k⌋gcd(x,y)==1\sum\limi...

2017-10-10 14:39:41

阅读数 807

评论数 0

hdu5791 Two(dp求公共子序列个数)

求两个序列的公共子序列个数,dp[i][j]表示a序列前i个和b序列前j个公共子序列个数。由容斥原理dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]。特别的,如果a[i]==b[j],会创造更多的公共子序列,即dp[i][j]+=dp[i-1][j-1]+1....

2017-08-16 16:36:46

阅读数 260

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭