hiho1353零一揹包

2021-08-14 18:46:46 字數 1017 閱讀 9095

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

最近天氣炎熱,小ho天天宅在家裡叫外賣。他常吃的一家餐館一共有n道菜品,**分別是a1, a2, ... an元。並且如果消費總計滿x元,還能享受優惠。小ho是乙個不薅羊毛不舒服斯基的人,他希望選擇若干道不同的菜品,使得總價在不低於x元的同時盡量低。

你能算出這一餐小ho最少消費多少元嗎?

第一行包含兩個整數n和x,(1 <= n <= 20, 1 <= x <= 100)

第二行包含n個整數a1, a2, ..., an。(1 <= ai

<= 100)

輸出最少的消費。如果小ho把n道菜都買了還不能達到x元的優惠標準,輸出-1。

樣例輸入

10 50

9 9 9 9 9 9 9 9 9 8

樣例輸出

53

分析:01揹包。把所有菜**的總和sum跟x的差值d

作為揹包容量,然後把結果無限接近d。

**:

#include #include #include #include #include #include #include //#include using namespace std;

int dp[3000],a[300];

int main()

int d=sum-x;

if(d<0) printf("-1\n");

else if(d==0) printf("%d\n",sum);

else//差值d為揹包

int ans=0;

for(int i=0;i<=d;i++)

ans=max(dp[i],ans);

printf("%d\n",sum-ans);

}return 0;

}

揹包問題之零一揹包

注 參考文獻 揹包九講 零一揹包問題 一 題目描述 有 n 件物品和乙個容量為 v 的揹包.放入第 i 件物品耗用的費用為ci 即所占用揹包的體積 得到的價值是 wi.求將哪些物品裝入揹包所得到的總價值最大.二 基本思路 01揹包是最基礎的揹包問題,這道題的特點是每種物品僅有一件,可以選擇放或不放,...

分支限界法解決零一揹包問題

1.1概述 在m件物品取出若干件放在空間為w的揹包裡,每件物品的體積為w1,w2 wn,與之相對應的價值為v1,v2 vn。最後選可行解中價值最大的解。1.2問題分析 零一揹包問題不同於揹包問題,揹包問題的物件可分。在解決揹包問題時,可以直接使用貪心法進行求解,思路也容易理解 先將物品的價效比進行排...

1353 揹包問題(貪心 可拆分)

題目描述 現在有很多物品 它們是可以分割的 我們知道它們每個物品的單位重量的價值v和重量w 1 v,w 100 如果給你乙個揹包它能容納的重量為m 10 m 200 你所要做的就是把物品裝到揹包裡,使揹包裡的物品的價值總和最大。輸入第一行輸入乙個正整數n 1 n 5 表示有n組測試資料 隨後有n測試...