HDU 2546 飯卡 01揹包變形

2021-08-22 13:10:58 字數 576 閱讀 5578

分析:每種菜可買一次或者不買,所以是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種菜 每種菜可購買一...