问题描述
本题的一些心得
对于这种无序集合计数类问题,可以通过对方案数除以某个数的阶乘,使得无序化变为有序化。
设计DP方程时候,应该先有序的列出状态转移方程每一项的来源,并一项项推导式子,可以使得做题过程更加有条理。
一个拥有良好科学素养的人,一定是有条理的 ——李理
题解
对于本题,发现如果最后对答案除以 (m!),则可以使得集合 「有序化」 。
对于一个满足要求的方案,必须满足以下 (3) 个条件:
-
没有互相重复的集合
-
没有空集
-
集合中的每个元素都必须出现偶数次
设 (dp[i]) 代表满足以上三个限制条件时的方案数。
对于三个限制条件分开考虑。
首先,对于条件 (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] imes (n-1) imes (2^n-i+1)) 。
对于条件 (2) ,如果有空集,则前 (i-1) 个符合条件,去掉贡献 (dp[i-1]) 。
(mathrm{Code})
调试中,码力不行,甘拜下风