杭電ACM hdu 2152 Fruit 解題報告(母函式)
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
Author
Linle
Source
ACM程式設計期末考試——2008-01-02
Solution
以下部分的版權歸本人(小飛)所有。所有權利保留。
歡迎轉載,轉載時請註明出處:
http://blog.csdn.net/xiaofei_it/article/details/17042497
本題直接套用母函式模板即可。關於母函式的詳細解釋請看:
http://blog.csdn.net/xiaofei_it/article/details/17042651
這裡順便演示一下,對於一般的題目,兩個模板都可以解決問題。
首先套用第一個模板。程式碼如下:
#include <iostream>
#include <cstring>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
int N,M,n1[200],n2[200],i,j,k;
int a[200],b[200];
int main()
{
while (cin>>N>>M)
{
for (i=0;i<N;i++)
cin>>n1[i]>>n2[i];
memset(a,0,sizeof(a));
a[0]=1;
for (i=0;i<N;i++)
{
memset(b,0,sizeof(b));
for (j=n1[i];j<=n2[i]&&j<=M;j++)
for (k=0;k<=M&&k+j<=M;k++)
b[k+j]+=a[k];
memcpy(a,b,sizeof(b));
}
cout<<a[M]<<endl;
}
return 0;
}
下來套用第二個模板。程式碼如下:
#include <iostream>
#include <cstring>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
int N,M,n1[200],n2[200],i,j,k,last,last2;
int a[200],b[200];
int main()
{
while (cin>>N>>M)
{
for (i=0;i<N;i++)
cin>>n1[i]>>n2[i];
a[0]=1;
last=0;
for (i=0;i<N;i++)
{
last2=min(last+n2[i],M);
memset(b,0,sizeof(int)*(last2+1));
for (j=n1[i];j<=n2[i]&&j<=last2;j++)
for (k=0;k<=last&&k+j<=last2;k++)
b[k+j]+=a[k];
memcpy(a,b,sizeof(int)*(last2+1));
last=last2;
}
if (last>=M)
cout<<a[M]<<endl;
else
cout<<0<<endl;
}
return 0;
}
相關文章
- 杭電ACM hdu 2110 Crisis of HDU 解題報告(母函式)ACM函式
- 杭電ACM hdu 1398 Square Coins 解題報告(母函式)ACM函式
- 杭電ACM hdu 1171 Big Event in HDU 解題報告(母函式)ACM函式
- 杭電ACM hdu 2082 找單詞 解題報告(母函式)ACM函式
- 杭電ACM hdu 2079 選課時間 解題報告(母函式)ACM函式
- 杭電ACM hdu 1085 Holding Bin-Laden Captive! 解題報告(母函式)ACMAPT函式
- HDU 1709 The Balance(母函式)函式
- 母函式詳解和史上最通用最高效的母函式模板函式
- HDU 1028 Ignatius and the Princess III:dp or 母函式函式
- HDU 2082-找單詞(母函式-有限次)函式
- hdu4620 Fruit Ninja ExtremeUIREM
- NYNU ACM 藍橋杯選拔賽 解題報告ACM
- 山東省第四屆acm解題報告(部分)ACM
- HDU 4620 Fruit Ninja Extreme(搜尋)UIREM
- Java 杭電ACM Train Problem I 1022JavaACMAI
- 杭電多校補題
- HDU4620 Fruit Ninja Extreme(搜尋+剪枝)UIREM
- YT03-遞推求解課堂題目-1003 獻給杭電五十週年校慶的禮物-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- HDU 1028-Ignatius and the Princess III(拆分整數-母函式-無限次)函式
- 河南理工大學程式設計(ACM)大賽解題報告程式設計ACM
- SG 函式初步 HDU 1536 && HDU 1944函式
- HDU 母函式簡單題 - 找單詞/Ignatius and the Princess III/Square Coins/Holding Bin-Laden Captive!函式APT
- HDOJ-1398 Square Coins(母函式)函式
- HDU2588GCD(尤拉函式)GC函式
- [熵值] 解題報告熵
- ACM HDU 1279 驗證角谷猜想(簡單水題)ACM
- 2020-10-30 ACM實踐報告部分程式題ACM
- HDU1729 Stone Game (SG函式)GAM函式
- 報告彙總資料使用組函式函式
- HDU 不要62 題解
- ARC173 解題報告
- HDU 4002Find the maximum(尤拉函式)函式
- HDU杭電1874-暢通工程續(dijkstra演算法和Floyd演算法)演算法
- HDU-ACM 2024 Day2ACM
- HDU-ACM 2024 Day3ACM
- HDU-ACM 2024 Day4ACM
- 『杭電1939』He is offside!IDE
- 科大訊飛大資料:新母嬰人群洞察報告大資料