time limit: 1 second
memory limit: 128 mb
現有n個砝碼,重量分別為a1,a2,a3,……,an,在去掉m個砝碼後,問最多能稱量出多少不同的重量(不包括0)。
輸入檔案weight.in的第1行為有兩個整數n和m,用空格分隔 第2行有n個正整數a1,a2,a3,……,an,表示每個砝碼的重量。
輸出檔案weight.out僅包括1個整數,為最多能稱量出的重量。
對於20%的資料,m=0; 對於50%的資料,m≤1; 對於50%的資料,n≤10; 對於100%的資料,n≤20,m≤4,m<n,ai≤100。
3 11 2 2
3
在去掉乙個重量為2的砝碼後,能稱量出1,2,3共3種重量。【題解】
這是乙個0/1揹包+搜尋的問題。
先選出m個物品,把他們"去掉「,然後對剩餘的物品,進行0/1揹包就可以了。
ai<=100,n<=20,則列舉的最大重量為2000;
用乙個boolean型的bo陣列來表示某乙個重量是否能達到。
if (can[j-w[i]])
can[j] = true;
最後統計一下重量的種數就可以了。
【**】
#include #include int n,m,w[21],ma = 0;bool bo[21],can[2001]; //bo用來表示哪些砝碼可以用,can則表示哪些重量可以由砝碼稱出
void input_data()
void select(int x,int num) //表示當前列舉到了第x個砝碼,去掉的砝碼數量為num
for (int i = x+1;i <= n;i++) //從x+1開始表示是乙個組合問題,從n個中選出m個。
if (bo[i])
}void get_ans()
void output_ans()
int main()
如何保護 U 盤?USB防毒高階篇 全
建立autorun.inf資料夾 在 autorun.inf 資料夾內建立con資料夾 使用者防止被病毒強行刪除並替換 autorun.inf 資料夾 設定檢測條件 第一種 不隱藏 autorun.inf 資料夾 如果突然發現 autorun.inf 資料夾消失或出現其它異常即代表 u 盤可能已經遭...