计数百题整理

1.十二重计数法
https://www.luogu.com.cn/problem/P5824

2.P6146 [USACO20FEB]Help Yourself G
https://www.luogu.com.cn/problem/P6146
把线段按照左端点排序后随便dp即可

3.P6075 [JSOI2015]子集选取
https://www.luogu.com.cn/problem/P6075
\(1~n\)的每个数字显然可以分开单独考虑
然后就变成了一个矩阵填\(0\)\(1\)的问题
随便求和一下可得答案为\(2^{n*k}\)

4.P6008 [USACO20JAN]Cave Paintings P
https://www.luogu.com.cn/problem/P6008
首先不同连通块之间答案显然独立
然后考虑一个连通块怎么计算答案
考虑从下往上合并
这个连通块会由一开始几个独立的部分逐渐变成一个统一的部分
从下往上扫描,并查集维护即可

5.Game of Death
https://ac.nowcoder.com/acm/contest/11261/G
考虑二项式反演
先去计算恰好为至少\(i\)个活下来的方案数\(g_i\)
这是个简单组合数学问题,随便选\(k\)个人然后钦定所有人都不打他们就可以了。
然后套用二项式反演即可得到恰好\(i\)个人活下来的概率。

6.P6773 [NOI2020] 命运
https://www.luogu.com.cn/problem/P6773

题意:给定一棵树和m条从直链(x为y的祖先)
然后对树的每条边进行黑白染色,要求每条直链上至少有一条白边的方案数。

一开始很容易去想容斥,然后把问题转化成去计算树链的并大小为k的方案数。
发现这个很难,序列上的版本都不会。

考虑直接大力dp

每个限制本质上是要求一个节点\(x\)往上在深度\(k\)以下至少有一条白边。

不妨设\(f[x][k]\)为这个的方案数

f[x][k]

7.bytedance camp D
题意:
\(n\)\(1*2\)多米诺骨牌
上面填有\(0,1,?\)
要使得这些骨牌存在某种重排列后\(p_{i,1}=p_{i+1,0}\)
求染色方案数

先考虑什么情况下可以使得重排列后有解

染色后显然只有4中骨牌\(00,11,01,10\)

推导后可以发现结论有\(3\)

1.全\(00\)
2.全\(11\)
3.\(cnt_{01}=cnt_{10}>0\)

数方案考虑为每种骨牌构造多项式然后分治乘法乘起来即可。
然后发现提取\(\frac{1}{x}\)
本质只会有\((1+x)\)这一种多项式
因此直接组合数搞一下就好了

8.玲珑杯 Round 17 B
https://blog.csdn.net/qq_33183401/article/details/73694890
容斥一下,理论上可以fwt优化

9.P3214 [HNOI2011] 卡农
https://www.luogu.com.cn/problem/P3214
考虑dp
逐个考虑每个盘子怎么填
发现前\(i-1\)个盘子确定后,第\(i\)个盘子的的集合也是确定的,但有可能不合法,即会出现空盘子或者有相同方案的情况。
考虑怎么把这些不合法的去掉。
简单推到即可知

\(f_i\)=\(A_{2^n-1}^{i-1}-f_{i-1}-(i-1)*(2^n-i+1)*f_{i-2}\)

10.P3746 [六省联考 2017] 组合数问题
https://www.luogu.com.cn/problem/P3746
显然可以转化为\(n\)个物品中选出\(x\)个物品使得\(x=r\ mod\ k\)
直接矩阵乘法优化\(dp\)即可。

11.P2490 [SDOI2011]黑白棋
\(k-nim\)博弈计数

根据\(k-nim\)的结论
按照二进制位背包\(dp\)即可。
每次转移考虑需要填多少倍的\(d+1\)即可。

12.CF961G Partitions
https://www.luogu.com.cn/problem/CF961G
一个以前做过的题
之前的做法是考虑每个物品的贡献,推推式子然后要么求出第二类斯特林列暴力算
要么继续用定义式拆掉斯特林数然后继续推式子推下去。

这里讲一个更简单的做法。
考虑仿照第二类斯特林递推的过程去\(dp\)
然后不妨把\(|S|*\sum w_i\)看作是\(w_i\)对集合里的其他所有元素有一个大小为\(w_i\)的贡献。
然后我们只需考虑每个元素得到的贡献求和即可。
考虑最后加入元素\(w_x\)
1.自己单走,拿到的贡献为\(w_x\),方案数\(s(n-1,k-1\)
2.放到一个已有集合,有\(k\)种放置方法,每种放置方法的权值为\(\sum w_y+w_x\)
因此对这\(k\)种放法求和后,就是\(\sum w_x-w_x+k*w_x\)
然后枚举\(w_x\)求和
不难发现式子为

\[ans=S*S_{n}^{k}+(n-1)*S*S_{n-1}^{k} \]

13.[2018雅礼集训1-16]方阵
https://www.cnblogs.com/hchhch233/p/10016522.html
直接对行或者列的其中一个应用polya容斥,剩下一个限制用排列数,套用斯特林反演即可。

14.ABC231G Balls in Boxes

考虑写出每个盒子的生成函数

\[f_n(x)=\sum \frac{(a_n+k)*x^k}{k!}=a_n*e^x+1+x*e^x=(x+a_n+1)*e^x \]

15.长度为\(n\)的环,\(m\)种颜色的环,相邻不相同的方案数。

\[(m-1)^n-(-1)^{n-1} \]

注意到\(e^nx\)的通项和好求,直接大力卷积即可。

posted @ 2021-12-05 23:24  Creed-qwq  阅读(41)  评论(0编辑  收藏  举报