題目鏈結
思路
首先要判斷卡里的錢是不是大於等於5元,如果不足5元,直接輸出餘額;如果大於等於5元,則先留5元買最貴的菜max_dish,再用剩下的錢買剩餘的菜(不包括最貴的菜),使得菜的總價最大,最大為max_value,max_dish+max_value就是使用卡里的錢所能買到菜的總價的最大值,5 -(max_dish+max_value)就是答案。
**
1 #include 2 #include 3 #include 4 #include 5using
namespace
std;67
const
int n = 1010
;8 vectorv;
9int
n;10
intdp[n];
1112
intmain()
1324
intm;
25 cin >>m;
26if(m - 5
< 0)27
3132 sort(v.begin(), v.end()); //
先排序33
for(int i=0; i1; i++) //
不包含最貴的菜
3438 cout<5]-v[n-1]<40return0;
41 }
HDOJ 2546 飯卡 01揹包
題意 卡內有m元錢,有n種菜可以買 每種菜只可以買一次 只要卡內金額大於等於5元就可以買任何菜 刷到負也可以 求最少可使卡上的餘額為多少。思路 最貴的乙個菜一定是最後買,然後用01揹包求 m 5 元錢可買的菜的最大金額,然後 m 最大金額 最貴的菜的價錢 即為所求。include include d...
hdoj2546飯卡 揹包01
problem description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一...
HDOJ 2546 飯卡 01揹包
problem description 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一...