組合數學——生成函式
參考:1.
2. 個人理解:
用多項式乘法表示某種組合的可能的次數。
模版1:
#include
using namespace std;
// author: tanky woo
// www.wutianqi.com
const int _max = 10001;
// c1是儲存各項質量砝碼可以組合的數目
// c2是中間量,儲存沒一次的情況
int c1[_max], c2[_max];
int main()
for(i=2; i<=nnum; ++i) // ----- ②
for(j=0; j<=nnum; ++j) // ---- ⑤
}cout << c1[nnum] << endl;
}return 0;}/*
*/
模版2:
#includetypedef long long ll;
const int n = 100 + 5;//假如題目只問到100為止
const int max = 3;//題目只有1,2,3這3種郵票
ll c1[n], c2[n];//c2是臨時合併的多項式,c1是最終合併的多項式
int n;
void init()
} for(int j = 0; j < n; j ++)
}} int main()
}
題目1:
hdu1028 ignatius and the princess iii
#include #define maxn 125
using namespace std;
typedef long long ll;
ll c1[maxn], c2[maxn];
void init()
for(int i = 2; i <= maxn; i++)
}for(int j = 0; j <= maxn; j++)
}}int main()
return 0;
}
題目2:
hdu 1398 square coins
ac**:
#include #define maxn 300 + 50
using namespace std;
typedef long long ll;
ll c1[maxn], c2[maxn];
void init()
}for(int j = 0; j < maxn; j++)
}}int main()
return 0;
}
題目3:
hdu 1085 holding bin-laden captive!
ac**:
#include #include #define maxn 8000 + 50
using namespace std;
typedef long long ll;
ll c1[maxn], c2[maxn];
int cost[3] = ;
int num[3];
void init(int a, int b, int c)
}for(int j = 0; j < maxn; j++)
}}int main() }}
}return 0;
}
生成函式 母函式 學習筆記
普通型生成函式 首先我們有乙個序列 a 我們嘗試用函式 f x sum na ix i 來表示 a 這就得到了母函式 如果當 n rightarrow infty 時,f x sum infty a ix i 這就可以表示無限長的序列了 所以這東西有個 用啊?別忙,繼續往下看.我們可以由定義得到,序...
組合數學 母函式
在數學中,某個序列的母函式 generating function,又稱生成函式 是一種形式冪級數,其每一項的係數可以提供關於這個序列的資訊。使用母函式解決問題的方法稱為母函式方法。母函式可分為很多種,包括普通母函式 指數母函式 l級數 貝爾級數和狄利克雷級數。對每個序列都可以寫出以上每個型別的乙個...
母函式筆記
母函式wiki 以下大量內容照抄自wiki 母函式可分為很多種,包括普通母函式 指數母函式 l級數 貝爾級數和狄利克雷級數。對每個序列都可以寫出以上每個型別的乙個母函式。構造母函式的目的一般是為了解決某個特定的問題,因此選用何種母函式視乎序列本身的特性和問題的型別。普通母函式就是最常見的母函式。一般...