問題描述
mr_he 因討厭???(手動和諧)而徹底放棄網購,他的日常用品都要到商場去購買,而且必須付現金。但是現 金購買,經常會遇到找零的問題,那麼現在請你幫助他解決這樣乙個問題: 現在 mr_he 手上有 n 種不同面值的硬幣,每種硬幣有無限多個。為了方便購物,他希望帶盡量 少的硬幣,但是要能組合出 1 到 m 之間的任意值。輸入格式
第一行為兩個整數:m 和 n,他們的意義如題目描述。輸出格式接下來的 n 行,每行乙個整數,第 i+1 行的整數表示第 i 種硬幣的面值
最少需要攜帶的硬幣數量,如果無解則輸出-1。樣例輸入
20 4樣例輸出 資料範圍1 2
5 10
50%的資料:1<=n<=10, 1<=m<=10^3;m的範圍非常大,如果dp的話就只能看能否把m這一維壓縮,然而這是比較困難的。100%的資料:1<=n<=100,1<=m<=10^9;
首先考慮無解的情況,很顯然,如果沒有1就無解。只要有1就一定有解,因為每種硬幣是無限多的。
注意到大面值硬幣是湊不出小面值的,但如果我們要硬幣盡量少,大面值的又不能太少。所以按面值從小到大的順序討論,盡量用已經選的硬幣湊成大面值硬幣的面值-1,如果不能恰好湊成就多用乙個。詳情見**:
#include
#include
#include
using
namespace
std;
int m,n,a[105],ans;
int main()
printf("%d",ans);
}
NOIP2016提高組模擬 積木
比賽的時候用了個神奇的小暴力,本來打算拿40分,沒想到暴力出奇蹟,隨機資料下表現優良,居然碾過去了。暴力方法不講,只貼 僅供對拍。正解顯然要用狀態壓縮 看資料範圍 設fs i,0 1 2 s表示當前已選擇的積木集合,i表示在最上方的積木編號,0 1 2表示最上方的積木哪面朝上。轉移方程容易推導。暴力...
NOIP2016複賽模擬賽 朋友
問題描述 mxy 即將前往新世界。在前往新世界的過程中,ta 遇見了兩種人。一種是只和lowb 做朋友,即當且僅當自己 的能力值大於對方時他們會成為朋友,另一種是大神我們做朋友,即當且僅當自己的能力 值小於對方時他們會成為朋友。現在告訴你兩種人的能力值。請你計算一共有多少對友好關係。輸入 每組測試資...
計數 NOIP2016提高A組模擬7 15
樣例輸入 2 10 樣例輸出 90資料範圍 剖解題目 題目說的很明了了。思路 求方案數,一般會設計道dp,規律之類的。解法 數字dp,設f i j 表示當前到了第i位,這一位的數字是j的方案數。自然有 f i j f i 1 l f i j 0 l k 且 l 0 and j 0 看到這位數,很明顯...