題目描述:
假設有x1個字母a, x2個字母b,..... x26個字母z,同時假設字母a的價值為1,字母b的價值為2,..... 字母z的價值為26。那麼,對於給定的字母,可以找到多少價值<=50的單詞呢?單詞的價值就是組成乙個單詞的所有字母的價值之和,比如,單詞acm的價值是1+3+14=18,單詞hdu的價值是8+4+21=33。(組成的單詞與排列順序無關,比如acm與cma認為是同乙個單詞)。
解題思路:
首先說明一下母函式——1.「把組合問題的加法法則和冪級數的乘冪對應起來。」
2.「把離散數列和冪級數一 一對應,把離散數列間的相互結合關係對應成為冪級數間的運算關係,最後由冪級數形式來確定離散數列的構造。 「
通俗一點說母函式就是用於解決多重集排列的指數型函式,比如說遞迴數列的通項問題(斐波那契數列的通項公式)神馬的。
所以這裡運用母函式開始當作揹包處理,字母數是個數,分數是容量。然後統計計算出題目要求的小於50的即可~
#include #include #include int main ()
for (i=1;i<=50;i++)
x+=f[26][i];
printf ("%d\n",x);
}return 0;
}
HDU 2082 找單詞 母函式
題目 題意 已知有26種數字 1,2,3,4.26 然後輸入26個數 m1,m2,m3,m26 分別代表每個數字的個數,求出總值不超過50的方案數。分析 由於每種數字各選多少個互不影響。對於數字1,有m1個,用多項式 1 x x 2 x 3 x m1 表示選數字1的總方案,1 x 0 表示不選,x ...
Hdu 2082 找單詞 母函式
很明顯是一道dp,但是現在在學生成函式了就得用生成函式的思維去做題,每種字元可以取0 a i 個,那麼算式可以寫成 i 126 1 xi x2i xa i i prod limits 1 x x x i 1 26 1 xi x 2i x a i i x的次方就代表價值,係數表示情況數 於是可以暴力了...
hdu 2082 找單詞(母函式)
題意 假設有x1個字母a,x2個字母b,x26個字母z,同時假設字母a的價值為1,字母b的價值為2,字母z的價值為26。那麼,對於給定的字母,可以找到多少價值 50的單詞呢?單詞的價值就是組成乙個單詞的所有字母的價值之和,比如,單詞acm的價值是1 3 14 18,單詞hdu的價值是8 4 21 3...