HDU 2546 飯卡(0 1揹包)

2021-06-26 02:12:16 字數 484 閱讀 8472

sblity,居然沒想到這道題中的每道菜的價值和「體積」是一樣的,終於開始刷苦逼的dp了額。

思路:要使剩餘的錢盡可能少,首先肯定要減去價值最貴的菜的價值,同時又為了保證能買到最貴的菜,因此買最貴的菜時卡里餘額至少為5元,最後在對剩餘的n-1個菜進行dp,看m-5元最多能買到多少錢的菜。最後相減既得。同時注意m<5的情況

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

int num[1005];

int dp[1005];

int main()

scanf("%d",&m);

sort(num,num+1+n);

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

} printf("%d\n",m-dp[m-5]-num[n]);

} return 0;

}

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種菜 每種菜可購買一...