小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共m盆。通過調查顧客的喜好,小明列出了顧客最喜歡的n種花,從1到n標號。為了在門口展出更多種花,規定第i種花不能超過ai盆,擺花時同一種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。
試程式設計計算,一共有多少種不同的擺花方案。
輸入格式:
第一行包含兩個正整數n和m,中間用乙個空格隔開。
第二行有n個整數,每兩個整數之間用乙個空格隔開,依次表示a1、a2、……an。
輸出格式:
輸出只有一行,乙個整數,表示有多少種方案。注意:因為方案數可能很多,請輸出方案數對1000007取模的結果。
輸入樣例#1:
複製
2 43 2
輸出樣例#1:
複製
2
【資料範圍】
對於20%資料,有0對於50%資料,有0對於100%資料,有0noip 2012 普及組 第三題
擺花可以用dp來做。
dp[i,j]表示用i種花,擺滿j盆的方案數。
所以dp[i,j]:=dp[i,j]+dp[i-1,j-k];(0<=k<=a[i]);a[i]表示當前花最多可以取到的盆數。
#include#include#define f(i,l,r) for(i=(l);i<=(r);i++)
#define ff(i,r,l) for(i=(r);i>=0;i--)
using namespace std;
const int maxn=105,mod=1000007;
int n,m,a[maxn],dp[maxn];
int main()
} }cout<
洛谷 P1077 擺花
題目原位址 2 4 3 2 輸出 2首先,我們想到的一定是暴力dfs 20分 include include using namespace std int n,m,ans,a 105 b 105 void dfs int k,int space if k n return for int i mi...
洛谷 P1077 擺花
一道簡單的dp問題。dp i j 表示前i種花j個花盆的方案數。那麼就有狀態轉移方程為sum dp i 1 k 其中k的取值是從0到min j,a i include using namespace std int m,n int dp 105 105 int a 105 int mod 10000...
洛谷p1077 擺花
題外廢話 真的超級喜歡這道題 擺花 題目鏈結 yy一提醒,我發現這道題和 洛谷p2089 烤雞有異曲同工之妙 資料更大了更容易tle呢qwq solution1 暴搜 搜尋 關於搜尋就不用多介紹了吧,這裡是用了dfs dfs函式中有兩個變數,rest和i分別表示還需要擺放多少盆花以及現在擺放到第幾種...