01揹包 加 貪心 HDOJ2546飯卡

2021-06-21 03:22:36 字數 470 閱讀 3262

hdoj  飯卡  01揹包加上貪心

這道題讓我糾結了很久,原來的思想是對的卻又找出了理由否定自己,折騰半天還是相信第一感覺的好。首先找出最大的**mx,然後讓其它的做0/1揹包,讓其總和逼近dp[m-5],這應該很好理解,最後能買到的最多食物就是dp[m-5]+mx,所以餘額為m-dp[m-5]-mx;不過還要判斷m<5的情況就是買不到(題意規定)。

#include#includeusing namespace std;

int dp[1005][1005];

int main()

{int i,j,k,m,n,v[1005];

while(cin>>n&&n)

{ for(i=0;i>v[i];

sort(v,v+n);

cin>>m;

if(m>=5)

{for(j=0;j<=m-5;j++)dp[0][j]=0;

for(i=0;i

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