題意:
中文題。。。
也就是說,當卡內的餘額大於等於5元時才可以買東西,即使消費完後是負的也是沒有關係的。
然後告訴你卡的餘額,每種物品的**,並且這裡的每種物品我們都只能選擇一次來買。
問你卡上最小的餘額是多少。
思路:因為我們要使卡上的餘額最少,所以我們要在餘額大於等於5的時候花費的最多才行,然後我們再減去**最大的那個物品的**就是最小的餘額了。
這裡我們把揹包容量看成m-5,然後利用01揹包求出在容量為m-5的時候時的消費最大值。並把每種物品的**排序,最後m-dp[m-5]-v[n]就是答案了。
#include#include#include#include#includeusing namespace std;
#define inf 99999999
#define maxn 1111
int v[maxn];
int dp[maxn+45];
int main()
sort(v+1,v+1+n);
for(int i=1;i=0;j--)
} printf("%d\n",m-dp[m-5]-v[n]); }}
/*31 2 361
505101 2 3 2 1 1 2 3 2 1
500
*/
DP 揹包 hdu2546 飯卡
problem description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一...
HDU2546 揹包DP 飯卡
description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一次。已知每種菜的...
hdu2546 飯卡(01揹包 dp)
problem description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一...