同类与单个考虑时的顺序问题
同类与单个考虑时的顺序问题
一、三个问题
(一)无序
问题
求满足 \(\sum_{c\in S}c=m\) 的正整数可重集合 \(S\) 的个数。\(m\) 是给定的。
做法
对每一种元素 \(c\) 考虑,其生成函数为 \(F_c(x)=1+x^c+x^{2c}+\cdots=\frac1{1-x^c}\)
那么答案为:\(\prod_{i=1}^mF_i(x)=\frac1{\prod (1-x^i)}\)
(二)有序st
问题
求满足 \(\sum_{i}a_i=m\) 的正整数序列 \(\{a\}\) 的个数,\(m\) 是给定的。
做法
对于每个位置考虑,有生成函数 \(F(x)=1+x+x^2+\cdots=\frac1{1-x}\)
假设序列有 \(k\) 个数,那么答案为 \(F^k(x)\)。
所以最终答案为 \(\sum_iF^i(x)=\frac1{1-F(x)}=1-\frac 1x\)
二、转化
(一)有序 \(\to\) 无序
可以发现问题等价于:对于正整数可重二元组 \((\alpha,\beta)\) 集合 \(S\),求满足 \(\alpha\le m,\sum \alpha =m,\beta\) 是 \(1\sim |S|\) 的一个排列的 \(S\) 的数量
(二)无序 \(\to\) 有序
把集合 \(S\) 中的元素排序,就变成了对上升序列的计数。
再对其进行差分,就变为了序列计数。
上述问题等价于:假设非负整数序列 \(\{c\}\) 的长度为 \(n\),求满足 \(\sum_{i=1}^nc_i(n-i+1)=m,c_1\ge 1\) 的序列 \(\{c\}\) 的个数。
三、DP上的应用
按同类处理无序与按每个处理有序,这种思路不仅在生成函数上,在dp上也可以用
试试看!
快进:建树+抽象圆方点(不是圆方树)+dp。
现在有 \(f_{i,j}\) 表示进行了 \(i\) 次操作,最小割为 \(j\) ,根节点为方点的方案数,$$g_{i,j}$ 表示进行了 \(i\) 次操作,最小割为 \(j\) ,根节点为园点的方案数。
要求方点的儿子——圆点之间是无序的,按照每个子树难以更新。
按照上文的思路,应该分类子树更新。
\(g(i,j)\) 就是一类子树,\(k\) 即为选择个数,写出了转移式。

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号