分析:每種菜可買一次或者不買,所以是01揹包
餘額m<5,只能買**<=餘額的菜 無法購買
餘額m=5,買最貴的菜
餘額m >5,先用(h=m-5)去買菜,再用5去買最貴的菜。h視為揹包容量,菜的**a[i]視為重量w和價值c。
//ac
#include#include#includeusing namespace std;
int n,m,h,i,a[1005],dp[1005][1005];//w[1005],v[1005];
int cmp (int a,int b)
int main()
sort(a,a+n,cmp);
cin>>m;
if(m<5)
cout<
else if(m==5)
cout<
else
}cout<
} } 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種菜 每種菜可購買一...