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