hdu2152(普通母函数)
Fruit
?
Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5632????Accepted Submission(s): 3304
?
?
Problem Description
轉眼到了收獲的季節,由于有TT的專業指導,Lele獲得了大豐收。特別是水果,Lele一共種了N種水果,有蘋果,梨子,香蕉,西瓜……不但味道好吃,樣子更是好看。
于是,很多人們慕名而來,找Lele買水果。
甚至連大名鼎鼎的HDU ACM總教頭 lcy 也來了。lcy拋出一打百元大鈔,"我要買由M個水果組成的水果拼盤,不過我有個小小的要求,對于每種水果,個數上我有限制,既不能少于某個特定值,也不能大于某個特定值。而且我不要兩份一樣的拼盤。你隨意搭配,你能組出多少種不同的方案,我就買多少份!"
現在就請你幫幫Lele,幫他算一算到底能夠賣出多少份水果拼盤給lcy了。
注意,水果是以個為基本單位,不能夠再分。對于兩種方案,如果各種水果的數目都相同,則認為這兩種方案是相同的。
最終Lele拿了這筆錢,又可以繼續他的學業了~
?
?
Input
本題目包含多組測試,請處理到文件結束(EOF)。
每組測試第一行包括兩個正整數N和M(含義見題目描述,0<N,M<=100)
接下來有N行水果的信息,每行兩個整數A,B(0<=A<=B<=100),表示至少要買該水果A個,至多只能買該水果B個。
?
?
Output
對于每組測試,在一行里輸出總共能夠賣的方案數。
題目數據保證這個答案小于10^9
?
?
Sample Input
2 3 1 2 1 2 3 5 0 3 0 3 0 3
?
?
Sample Output
2
12
解析:母函數模板加上一些范圍而已。
#include<bits/stdc++.h> using namespace std; #define maxn 105int a[maxn],b[maxn],minum[maxn],maxnum[maxn]; int main() {int n,m;while(cin>>n>>m){for(int i = 0; i < n; i++){cin>>minum[i]>>maxnum[i];}memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(int i = minum[0]; i <= maxnum[0]; i++)a[i] = 1;for(int i = 1; i < n; i++){for(int j = 0; j <= m; j++){for(int k = minum[i]; k + j<=m && k <= maxnum[i];k++){b[j+k] += a[j];}}for(int j = 0; j <= m; j++){a[j] = b[j];b[j] = 0;}}cout<<a[m]<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的hdu2152(普通母函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ElasticSearch之Tokeni
- 下一篇: zcmu-2153(拓扑排序+优先队列)