组合计数小启发

在DP的领域中还有的很大一部分就是组合计数。

 

以前做了FHQ在集训队作业中的《连边》这道题,大概就是要你给一个图连边是的若干个点度数为奇数。

比较容易发现是一道DP题,但是怎样保证状态不重不漏?

 

常用的方法就是增维,比如按照排序大小扩展啦,按照字典序扩展啦从而使得状态不重,但是还有两种方法可以使得状态不重不漏,那就是除法和减法!

 

除法可能大家用的多,比如最常见的组合数就是利用的除法,从排列数除以N!,但是减法就比较少见了。

 

今天在GYH的集训队作业里面找到了连边这道题的加强版,简要描述如下:

 

FacerN种巧克力,从这N种巧克力选3种共有C(N,3)种可能,从这C(N,3)种选出M种,就一共有3M个巧克力,对于每种巧克力,若至少有两个该种巧克力,则将它们同时吃掉,问各种巧克力剩下的数目和输入相同的选取方案有多少种,输出答案除10007的结果。

 

状态为F[I,J]表示现在已经选了I个巧克力组合,还剩下J种巧克力。这个状态实际上是可以通过巧妙的除法和减法,因为如果选了两个重复的方案,我们依然还是可以知道应该从谁转移过来,因为J值不变。

你可能感兴趣的:(c,扩展,作业)