HDU 2546 飯卡(01揹包) 解題報告

2021-06-07 19:52:32 字數 407 閱讀 7830

昨天吧揹包九講中最基礎的01揹包看完,做了2602。結果晚上比賽相同題目卻做不出。。苦想幾個小時。。。

解題思路:要使剩餘錢最少,應該留下塊錢買最貴的東西(標記為t)(注意金額m<5 的情況!!) 接下來就是用剩下的m-5元買除t以外的菜。每種菜只能買一次。就構成揹包問題。

**:

#include#include#include#include#include#includeusing namespace std;

int main()

} scanf("%d",&m);

if(m<5)

for(i=1;i<=n;i++)

} printf("%d\n",m-v[m-5]-ma);

} return 0;

}

HDU 2546 飯卡(01揹包) 解題報告

昨天吧揹包九講中最基礎的01揹包看完,做了2602。結果晚上比賽相同題目卻做不出。苦想幾個小時。解題思路 要使剩餘錢最少,應該留下塊錢買最貴的東西 標記為t 注意金額m 5 的情況!接下來就是用剩下的m 5元買除t以外的菜。每種菜只能買一次。就構成揹包問題。cpp include include i...

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...