藍橋杯 ADV 196 演算法提高 擺花

2021-10-02 19:41:48 字數 953 閱讀 4359

演算法提高 擺花

時間限制:1.0s 記憶體限制:128.0mb

問題描述

小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共m盆。通過調查顧客的喜好,小明列出了顧客最喜歡的n種花,從1到n標號。為了在門口展出更多種花,規定第i種花不能超過ai盆,擺花時同一種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。

試程式設計計算,一共有多少種不同的擺花方案。

輸入格式

第一行包含兩個正整數n和m,中間用乙個空格隔開。

第二行有n個整數,每兩個整數之間用乙個空格隔開,依次表示a1、a2、……an。

輸出格式

輸出只有一行,乙個整數,表示有多少種方案。注意:因為方案數可能很多,請輸出方案數對1000007取模的結果。

樣例輸入

2 43 2

樣例輸出

2輸入輸出樣例說明

有2種擺花的方案,分別是(1,1,1,2), (1,1,2,2)。括號裡的1和2表示兩種花,比如第乙個方案是前三個位置擺第一種花,第四個位置擺第二種花。

資料規模和約定

對於20%資料,有0分析:此題實際上對應求帶限制的不定方程整數解的個數,即求

的整數解個數。

設初始條件:

#include int main()

; scanf("%d %d", &n, &m);

for (int i = 1; i <= n; ++i)

scanf("%d", &a[i]);

int f[105][105] = ;

for (int j = 0; j <= m && j <= a[1]; ++j)

f[1][j] = 1;

for (int i = 2; i <= n; ++i)

}printf("%d", f[n][m]);

return 0;

}

藍橋杯 ADV 131演算法提高 選擇排序

問題描述 排序,顧名思義,是將若干個元素按其大小關係排出乙個順序。形式化描述如下 有n個元素a 1 a 2 a n 從小到大排序就是將它們排成乙個新順序a i 1 i k 為這個新順序。選擇排序的思想極其簡單,每一步都把乙個最小元素放到前面,如果有多個相等的最小元素,選擇排位較考前的放到當前頭部。還...

藍橋杯 ADV 20 演算法提高 交換Easy

問題描述 給定n個整數組成的序列,每次交換當前第x個與第y個整數,要求輸出最終的序列。輸入格式 第一行為序列的大小n 1 n 1000 和操作個數m 1 m 1000 第二行包含n個數字,表示初始序列。接下來m行,每行兩個整數x,y 1 x,y n 表示要交換的兩個整數。在一次交換中,如果x和y相等...

藍橋杯 ADV 208 演算法提高 矩陣相乘

問題描述 小明最近在為線性代數而頭疼,線性代數確實很抽象 也很無聊 可惜他的老師正在講這矩陣乘法這一段內容。當然,小明上課打瞌睡也沒問題,但線性代數的習題可是很可怕的。小明希望你來幫他完成這個任務。現在給你乙個ai行aj列的矩陣和乙個bi行bj列的矩陣,要你求出他們相乘的積 當然也是矩陣 輸入資料保...