題目:
題意:已知有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(x^1)表示選乙個1,x^2表示選兩個1,.......,x^m1表示選m1個1。
對於數字2,有m2個,用多項式(1+x^2+x^4+x^6+.....+x^(2*m2))表示選數字2的總方案,1表示不選,x^2表示選乙個2,x^4表示選兩個2,.......,x^(2*m2)表示選m2個2。
。。。。。。
構造母函式如下:
g(x)=(1+x+x^2+x^3+....+x^m1)*(1+x^2+x^4+x^6+.....+x^(2*m2))......(1+x^26+x^52+....+x^(26*m26
))展開後如下:
g(x)=1+(p1
)x+(p2
)x^2+(p3)x^3+........
x指數冪代表總值,x的係數代表其方案數。
**:
#include #include #include using namespace std;
int main()
int ans=0;
for(i=1;i<=50;i++)
ans+=a[i];
printf("%d\n",ans);
}return 0;
}
母函式 找單詞(hdu2082)
題目描述 假設有x1個字母a,x2個字母b,x26個字母z,同時假設字母a的價值為1,字母b的價值為2,字母z的價值為26。那麼,對於給定的字母,可以找到多少價值 50的單詞呢?單詞的價值就是組成乙個單詞的所有字母的價值之和,比如,單詞acm的價值是1 3 14 18,單詞hdu的價值是8 4 21...
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...