題目描述
現有n個砝碼,重量分別為a1,a2,a3,……,an,在去掉m個砝碼後,問最多能稱量出多少不同的重量(不包括0)。
請注意,砝碼只能放在其中一邊。
輸入格式
輸入檔案weight.in的第1行為有兩個整數n和m,用空格分隔
第2行有n個正整數a1,a2,a3,……,an,表示每個砝碼的重量。
輸出格式
輸出檔案weight.out僅包括1個整數,為最多能稱量出的重量數量。
輸入輸出樣例
輸入 #1
複製3 1
1 2 2
輸出 #1複製3
思路:列舉[0,
2n−1
][0,2^-1]
[0,2n−
1]共2 n2^
2n種狀態,若某個狀態的二進位制表示含有n−m
n-mn−
m個11
1,那麼它二進位制為1
11的位就是我們要選取的砝碼的標號,利用bit
se
tbitset
bitset
來計算答案,bit
set[
i]=1
bitset[i]=1
bitset
[i]=
1表示用這些砝碼可以表示出重量i
ii,初始化需要令bit
set[
0]=1
bitset[0]=1
bitset
[0]=
1,那麼對於選取的砝碼a[j
]a[j]
a[j]
,只需要令:bit
set=
bits
et∣(
bits
et
<
using
namespace std;
typedef
long
long ll;
int n,m;
int a[25]
;int
main()
}printf
("%d\n"
,ans-1)
;return0;
}
洛谷P1441 砝碼稱重
現有n個砝碼,重量分別為 aia iai 在去掉 mmm 個砝碼後,問最多能稱量出多少不同的重量 不包括 000 請注意,砝碼只能放在其中一邊。第 111 行為有兩個整數 nnn 和 mmm,用空格分隔。第 222 行有 nnn 個正整數 a1,a2,a3,ana 1,a 2,a 3,ldots a...
洛谷 P1441 砝碼稱重(深搜 DP)
傳送門 題目描述 現有n個砝碼,重量分別為a1,a2,a3,an,在去掉m個砝碼後,問最多能稱量出多少不同的重量 不包括0 輸入輸出格式 輸入格式 輸入檔案weight.in的第1行為有兩個整數n和m,用空格分隔 第2行有n個正整數a1,a2,a3,an,表示每個砝碼的重量。輸出格式 輸出檔案wei...
洛谷 P1441 砝碼稱重(DFS回溯 DP)
題目大意 已知有n個砝碼,我們從中可以任意去掉m個,問我們最多可以得到多少種不同的重量。解題思路 首先,我們把解題分為兩個思路 首先,我們看任意去掉m個。這個我們可以用dfs模擬,關鍵在於停止條件。我們知道我們每一步都可以選擇新增或者不新增某個砝碼,然後重複n次。這樣我們就有最簡單的遞迴停止條件,遞...