计数dp+概率+大数——(抽屉问题解的个数)zoj3380
难的地方在于计数dp。。给定范围[1,n]的数去填m个位置,要求不能出现超过I个相同的数,
那就用dp[i][j]表示在阶段i,已经填了j个位置的可能解法,那么只要枚举i填的位置数k∈[0,min(j,I-1)]进行状态转移即可
/* 范围在[1,n]取m次,问有>=I个数相同的概率 那么分母必定是m^n 现在来看分子,因为>=I,I+1,....n的计数不好求,所以转化为计数 <I 的个数即可 1-n之间的数填m次 每个数最多填I-1次,可以用dp[i,j]表示用1-i个数填了j次的个数 转移方程如下:数i填了k次,即从i-1填剩下的位置中挑了k个,0<=k<=min(I-1,j)(i可以不填,但最多只能填I-1次) dp[i,j]=sigma dp[i-1,j-k]*C( m-(j-k),k ) 三重循环 i j k 初始化dp[0][0]=1 要用大数写。。 */