容斥原理
文章平均质量分 82
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[组合 容斥 DP] BZOJ 2863 愤怒的元首
题解:http://blog.csdn.net/werkeytom_ftd/article/details/51182412我们设f[i]表示i个带编号结点组成的合法DAG的个数。 如果删去DAG中所有入度为0的结点,接下来的DAG也是一个合法DAG。 但我们不知道有多少入度为0的结点,所以我们想要得到至少有0个入度为0的结点的DAG个数(对就是这么神奇)。 那就容斥呗。原创 2016-04-20 16:18:17 · 654 阅读 · 0 评论 -
[哈密顿路径 FFT 容斥] TCO 2016 Final HamiltonianPaths
只能走补图的边 那么原图色的边不能走 那么我们容斥走了几条原图的边 这些边肯定是一些链 把链缩成一个点 那么不考虑其他不合法边用不用的情况下 贡献是 m的阶乘 m是缩完够的点数 然后 因为缩起来的点只可能是在同一个模板图中 那么对于最后总点数m的缩点方案数 是可以先处理出单个模板图的方案数 然后fft的 状压dp预处理模板图// BEGIN CUT HERE #include<c原创 2017-07-01 22:00:23 · 582 阅读 · 0 评论 -
[Lucas定理 数位DP 容斥原理] 2015 计蒜之道 复赛 360的产品试用体验
直接上官网题解吧:http://blog.jisuanke.com/?p=146题意即求其中且因为 47 是质数,如果把ai, li, ri, xi 写作 47 进制数因为 47 是质数,根据Lucas定理 ,题目转换为求的值,同时满足:– 字典序不小于 不大于 – x1 + x2 + x3 ≤ n.原创 2016-11-14 12:45:23 · 1049 阅读 · 0 评论 -
[DP 容斥原理] HDU 5519 Kykneion asma
扔下题解就跑 其实我也没全搞懂 先挖个坑#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;const int P=1e9+7;const int N=20005;ll fac[N],inv[N];int cnt[1原创 2017-04-22 20:55:23 · 675 阅读 · 0 评论 -
[meet in middle 矩阵树定理 容斥原理] SRM 551 div1 SweetFruits
集训队论文传送门大概就是我们先用meet in middle求出有恰好k个真甜的方案数 然后我们求这些东西的生成树个数 乘在一起的和就是答案 我们让真甜连真甜 真甜连不甜 假甜连不甜 不甜连不甜 跑一发矩阵树定理 这样只能保证这些真甜的某个子集是真甜 那么我们需要用 0~k-1 的简单容斥一下// BEGIN CUT HERE #include<conio.h>#include<sstr原创 2017-04-10 22:14:32 · 658 阅读 · 0 评论 -
[容斥原理 DP] BZOJ 4767 两双手
首先一个向量可以被两个向量唯一表示 然后就转化为有障碍点的网格图路径计数 这应该是个经典的容斥模型 果然是NOIP模拟赛啊 如果不考虑障碍 那么答案是path(s,t)=Cmn+mpath(s,t)=C_{n+m}^m 然后我们考虑容斥 枚举路径上碰到的第一个障碍点vv Ans=Cmn+m−fv∗path(v,t)Ans=C_{n+m}^m-f_v*path(v,t) 其中fvf_v表示从原创 2017-03-07 20:25:15 · 1105 阅读 · 0 评论 -
[大力容斥] 省选模拟赛 4 B. 买买买 buy
题目大意 n 种物品,价格 ci 元, k 个人每人有m元 每人会购买若干种物品,可以为空,每种最多一个,总价格不能超过m 总共有多少种不同的购买方案使得每种物品至少被购买了两次大力容斥一波 我们先枚举哪些是次数小于2的 然后再枚举子集表示哪些是买了一个的 然后把这些个分给某些人 就是个集合的拆分 复杂度是bell数 卡卡常 剪剪枝 就A了…#include<cstdio>#原创 2017-03-18 20:54:55 · 444 阅读 · 0 评论 -
[带标号无向连通图计数 容斥原理 多项式求逆 多项式求ln 模板题] BZOJ 3456 城市规划
可以通过容斥求出答案的表达式fi=2C2i−∑j=1i−1Cj−1i−1∗fj∗2C2i−jf_i=2^{C_i^2}-\sum_{j=1}^{i-1} C_{i-1}^{j-1}*f_j*2^{C_{i-j}^2} 其中前一部分表示i个点任意连边 后半部分枚举1所在的连通块然后容斥掉∑j=1ifj(j−1)!∗2C2i−j(i−j)!=2C2i(i−1)!\sum_{j=1}^i {f_j \o原创 2017-02-21 18:08:59 · 2641 阅读 · 0 评论 -
[容斥原理] BZOJ 2839 集合计数
考虑容斥原理 计算交集大小至少为i的集合有多少种 首先需要选出ii个元素 方案为CinC_n^i 其它2n−i2^{n−i}个集合每个可选可不选 一共22n−i−12^{2^{n−i}}−1种 故答案为∑i=kn(−1)i−kCinCki(22n−i−1)\sum _{i=k}^n (−1)^{i−k} C_n^i C_i^k (2^{2^{n−i}}−1)#include<cstdio>原创 2017-02-21 18:48:22 · 688 阅读 · 0 评论 -
[容斥 状压DP 树形DP] BZOJ 4455 [Zjoi2016]小星星 & UOJ #185 【ZJOI2016】小星星
杜老师说的哦UOJ上需要卡常#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p原创 2017-01-20 20:52:44 · 604 阅读 · 0 评论 -
[容斥系数 记录状态DP] 2016 计蒜之道 初赛 第四场 遗失的支付宝密码
题解:http://blog.jisuanke.com/?p=270其实答案最后答案的结构显然是 c_1 \cdot m^1 + c_2 \cdot m^2 + ... + c_n \cdot m^nc1⋅m1+c2⋅m2+...+cn⋅mn 这样的,系数 c_ici 只和nn 有关,于是可以本地打表出来。这样就可以很快解决这个 case。原创 2016-11-10 07:02:55 · 642 阅读 · 0 评论 -
[DP 容斥] BZOJ 2669 [cqoi2012]局部极小值
从小到大放 如果一个格子是极小值 一定比周围先放 根据这个dp但是这样不保证其他地方也成为极小值 那么容斥一下 最多8个是极小值#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef pair abcd;typedef原创 2016-08-08 22:20:37 · 440 阅读 · 0 评论 -
[DP 容斥原理] BZOJ3622 已经没有什么好害怕的了 && BZOJ 2024 [SHOI2009] 舞会
传送门:http://www.cnblogs.com/dyllalala/p/3900077.html比较好的DP题#include#include#include#define P 1000000009using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1原创 2016-03-15 20:10:59 · 619 阅读 · 0 评论 -
[容斥] BZOJ 4762 最小集合
看fls的题解吧#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;const int N=1055;const int P=1e9+7;inline void add(int &x,int y){ x+=y; if (x>=P) x-=P;}#define read(x) scanf("%d"原创 2017-06-22 20:38:32 · 426 阅读 · 0 评论