Codevs No 2144 砝碼稱重2

2022-08-22 22:00:11 字數 852 閱讀 5817

2016-05-31 22:01:16

題目大意:

給定n個砝碼,求稱出m的重量所需砝碼最小個數

解法:貪心

使砝碼數量最小,當然是每個砝碼越大越好

首先排序,從大砝碼開始試,遇到的第乙個解一定最優

需要注意的地方:

1.這道題的資料還是很給力的,裸貪心過不了,要加乙個字首和判斷可達性進行優化

1

//砝碼稱重2 (codevs no.2144)2//

貪心3 #include4 #include5

using

namespace

std;

6const

int maxn=35;7

long

long

n,m;

8int

ans;

9int

tmp;

10long

long

a[maxn];

11long

long

sum[maxn];

12bool dfs(int x,long

long val,int

step)

1319

for(int i=x;i>=1;i--)

2027}28

return0;

29}30int

main()

3137 sort(a+1,a+n+1

);38

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

3942 dfs(n,m,0

);43 printf("%d"

,ans);

44 }

2144 砝碼稱重 2

時間限制 1 s 空間限制 16000 kb 題目等級 鑽石 diamond 題解 description 有n個砝碼,現在要稱乙個質量為m的物體,請問最少需要挑出幾個砝碼來稱?注意乙個砝碼最多只能挑一次 輸入描述 input description 第一行兩個整數n和m,接下來n行每行乙個整數表示...

Codevs 2144 砝碼稱重 2

時間限制 1 s 空間限制 16000 kb 題目等級 鑽石 diamond 題解有n個砝碼,現在要稱乙個質量為m的物體,請問最少需要挑出幾個砝碼來稱?注意乙個砝碼最多只能挑一次 輸入描述 input description 第一行兩個整數n和m,接下來n行每行乙個整數表示每個砝碼的重量。輸出描述 ...

稱砝碼問題

有一組砝碼,重量互不相等,分別為m1 m2 m3 mn 它們可取的最大數量分別為x1 x2 x3 xn 現要用這些砝碼去稱物體的重量 問能稱出多少種不同的重量。input 測試資料第一行乙個整數n n 10 表示有多種不同的砝碼 第二行n 個整數 中間用空格分隔 m1 m2 m3 mn 分別表示 n...