BZOJ2339 「HNOI2011」 卡农 组合数学

问题描述

BZOJ2339


本题的一些心得

对于这种无序集合计数类问题,可以通过对方案数除以某个数的阶乘,使得无序化变为有序化。

设计DP方程时候,应该先有序的列出状态转移方程每一项的来源,并一项项推导式子,可以使得做题过程更加有条理。

一个拥有良好科学素养的人,一定是有条理的 ——李理


题解

对于本题,发现如果最后对答案除以 \(m!\),则可以使得集合 「有序化」 。

对于一个满足要求的方案,必须满足以下 \(3\) 个条件:

  • 没有互相重复的集合

  • 没有空集

  • 集合中的每个元素都必须出现偶数次

\(dp[i]\) 代表满足以上三个限制条件时的方案数。

对于三个限制条件分开考虑。

扫描二维码关注公众号,回复: 8168137 查看本文章

首先,对于条件 \(3\) ,只要知道 \(dp[1],dp[2],\cdot,dp[i-1]\) ,就可以推出 \(dp[n]=A_{2^n-1}^{i-1}\)

对于条件 \(1\) ,假设集合 \(j\) 与集合 \(i\) 重复,则 \(j\)\(i-1\) 种取法,\(i\)\(2^n-1-(i-2)=2^n-i+1\) 种取法,本处去掉的贡献为 \(dp[i-2] \times (n-1) \times (2^n-i+1)\)

对于条件 \(2\) ,如果有空集,则前 \(i-1\) 个符合条件,去掉贡献 \(dp[i-1]\)


\(\mathrm{Code}\)

```cpp

猜你喜欢

转载自www.cnblogs.com/liubainian/p/12031799.html