HDU 2546飯卡 01揹包 貪心

2022-05-24 09:57:08 字數 672 閱讀 5032

這道題有個小小的坎,就是低於5塊不能選,大於5塊,可以任意選,所以就在初始條件判斷一下剩餘錢數,然後如果大於5的話,這時候就要用到貪心的思想,只要大於等於5,先找最大的那個,然後剩下的再去用揹包去選擇,這樣的結果一定是最優的。因為最大的那個一定會被選中,剩下多少錢都無所謂,用揹包可以獲得剩下的最優解,所以最後也是最優解

**如下

1 #include 2 #include 3 #include 4

using

namespace

std;

5const

int n = 1006;6

intdp[n];

7int

value[n];

8int

main()

922 sort(value, value + n);//

排序 23 memset(dp, 0, sizeof

(dp));

24//

01揹包

25for (int i = 0; i < n - 1; i++)

2631 printf("

%d\n

", v - dp[v - 5] - value[n - 1

]);32}33

return0;

34 }

HDU2546 飯卡 01揹包

problem description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一...

HDU 2546 飯卡 01揹包

我的做法是找出n種菜中最貴的 k,把揹包的容量m增加的到m k 然後對 排個序,因為dp是從第乙個菜到最後乙個菜,越貴的菜越後選結果越小,然後進行dp include include include include using namespace std const int maxn 1010 in...

hdu2546飯卡 01揹包

problem description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一...