随笔分类 - 数学 - 容斥原理
摘要:神仙容斥+DP可还行. code: #include <cstdio> #include <cmath> #include <vector> #include <cstring> #include <algorithm> #define N 1007 #define ll long long #de
阅读全文
摘要:求:有多少种序列满足 $a[i] \subseteq [1,D]$ 且 $m \leqslant \sum_{i=1}^{D} \frac{cnt[i]}{2}$裸做的话就是一个背包:$f[i][j]$ 表示前 $i$ 个数匹配了 $j$ 对的方案数,然后由于没有匹配的肯定是单个出现,所以转移的话比
阅读全文
摘要:容斥+分治NTT. 令 $dp[i]$ 表示以 $i$ 结尾的方案数. 如果只有小于号的话 $dp[i]$ 是非常好求的:$\frac{n!}{\prod a_{i}}$ 即总阶乘除以每一个小于号连续段. 有大于号的时候考虑容斥: 遇到第一个大于号的时候先不考虑当前位置关系,方案数就是 $dp[j]
阅读全文
摘要:显然,不合法的情况要存在序列被分成值域为 $[1,i]$ 与 $[i+1,r]$ 两部分. 不妨采用容斥的方法来减去所有不合法的情况. 令 $f[i]$ 表示 $1$ ~ $i$ 构成的合法序列数目. 那么不合法的情况一定可以表示为 $f[j] \times (i-j)!$ 即前 $j$ 个数组成的
阅读全文
摘要:自己独立想出来的,开心. 首先,对于 $x$ 不等于 $y$ 的情况,显然只限制前缀/后缀. 然后如果没有 x 与 y 相等的情况的话我们完全可以枚举总的 1 的个数,然后限制后缀的就可以转化成限制前缀的. 如果引入 x 与 y 相等的情况,也就是说要求前缀或后缀都填满也按照上述方式处理即可. 但是
阅读全文
摘要:题意:给定 $n$ 个点,$m$ 条边的图,求有多少子图满足子图 (即边可以任意定方向或消失)是一个 DAG ? $f(S)=\sum_{T \subseteq S} (-1)^{|T|-1} \binom{|S|}{|T|} f(S-T) 2^{E(S)-E(T)-E(S-T)}$. 这里 $E(
阅读全文
摘要:题意:给定 $1$ ~ $2^n-1$ 每个数出现的概率. 每次会随机选择一个数字,与手中的数字 or 起来. 求:期望多少次使得手中的数字等于 $2^n-1$. 题解: 考虑 min-max 容斥. $\max(S)=\sum_{T \subseteq S} (-1)^{|T|} \min(T)$
阅读全文
摘要:公式:$\max(S)=\sum_{ T\in S} (-1)^{|T|-1} \min(S)$ code: #include <bits/stdc++.h> #define ll long long #define N 23 #define setIO(s) freopen(s".in","r",
阅读全文
摘要:题意: 给定长度为 $n$ 的数列 $a[1...n]$. 对于 $1$ 到 $M$ 的每个整数 $d$,有多少个不同的数列 $b[1...n]$ 满足: 1. $1 \leqslant b[i] \leqslant M$. 2. $gcd(b[1...n])=d$. 3. 恰好有 $k$ 个位置满
阅读全文
摘要:神仙题!!!! 其实还是有一点没有搞懂,但是大体上差不多懂了. code: #include <bits/stdc++.h> #define ll long long #define N 3200020 #define setIO(s) freopen(s".in","r",stdin) using
阅读全文
摘要:题意:令 $f(i)$ 表示对于 $\binom{n}{i}$ 种包含 $i$ 个点的最小连通块的总节点个数和. 面对个数和/价值和且点和点之间没有限制条件的问题时可以考虑单独处理每个点的贡献. 考虑点 $j$ 对 $f(i)$ 的贡献. 那么 $j$ 对 $f(i)$ 有贡献时分两种情况. 1.
阅读全文
摘要:求生成树方案的话要用矩阵树定理,然后这个容斥就是常见套路了吧. code: #include <cstring> #include <cstdio> #include <vector> #include <algorithm> #define N 18 #define mod 1000000007
阅读全文
摘要:很不错的一道数数题. code: #include <cstdio> #include <algorithm> #define N 203 #define ll long long #define mod 1000000007 #define setIO(s) freopen(s".in","r",
阅读全文
摘要:题意:给定一颗树,要求每个点的点权范围是 $[1,D]$ 且权值不大于父亲,求方案数. 显然,即使 $D$ 再大,$n$ 个点也最多只会取到 $n$ 个值. 令 $f[x][i]$ 表示以 $x$ 为根的子树中点 $x$ 取到权值 $i$ 的方案数. 令 $s[x][i]$ 表示 $f[x][i]$
阅读全文
摘要:有 $2^n$ 名选手,编号为 $1$ 至 $2^n$. 现在这 $2^n$ 名选手将进行 $n$ 轮淘汰赛,决出胜者. 若 $x<y$,则 $x$ 能战胜 $y$. 但是有 $m$ 个例外,1 号选手会输给这 $m$ 个选手,问有多少种初始排列方式使得 $1$ 号点能取得胜利. (每次是 2i v
阅读全文
摘要:看到这道题第一个想法肯定是按照套路钦定一些地方不合法,然后其他地方随便选,最后来一个二项式反演. 但是我们发现这个 DP 状态很难设置. 然后你发现一个非常神的性质:由于题中给的是绝对值,所以说一个位置要是不合法的话,只有两种数值的可能(+k和-k) 然后把位置 $i$ 和值 $i+/-k$ 相连,
阅读全文
摘要:Description Input Output 看到这种恰好的一般就是二项式反演了. 令 $f[i][j]$ 表示考虑糖果前 $i$ 个糖果,恰好比药片大 $j$ 个的方案数.(我们只选了 $j$ 个糖果) 转移的话我们将两个数组分别从小到大排序,这样就非常好转移了. 我们令 $l[i]$ 代表第
阅读全文
摘要:题意:在 $n$ 个数的 $2^n-1$ 个非空子集中选取 $m$ 个,且必须满足: 1. $m$ 个子集两两不同. 2. 每个数在 $m$ 个子集中出现总次数为偶数. 3. 每个子集非空. 令 $f[i]$ 表示选出了 $i$ 个集合且满足了上述 3 条限制的方案数. 直接求 $f[i]$ 比较困
阅读全文
摘要:这个题和那个城市规划几乎是一个套路. 就是钦定一个点,然后枚举这个点所在连通块大小,然后其余部分随便连. 由于我们钦定了一个点,所以我们算的方案数肯定不会重复. 即 $f[S]=TOT(S)-\sum_{T \subseteq S} f(T) \times TOT(S-T)$. code: #inc
阅读全文
摘要:题意: 给定一张图,和这个图的一颗生成树. 求:重新对这颗树标号,有多少种标号方式满足如果一条边 $(x,y)$ 在树中出现的话在图中也出现. 暴力做法:$f[i][j][S]$ 即在以 1 为根的树中遍历到点 $i$,该点映射的点是 $j$,且 $i$ 这颗子树映射的点集是 $S$. 转移的话时间
阅读全文