HDU5616 揹包 天平平衡問題

2021-07-16 23:31:53 字數 776 閱讀 4589

題目大意:有乙個只能判斷兩邊是否相等的天平,現在給你一些已知重量的砝碼,問你是否可以通過這些砝碼測量乙個任意給定的重量(input),即可以通過在天平兩側放一定數量的砝碼,使天平平衡。

#include #define inf 0x3f3f3f3f

using namespace std;

const int n=1000;

char s[n];

int a[n];

int dp[n][3*n];

int main()

int m;

memset(dp,0,sizeof(dp));

dp[0][mid]=1;

///這一步很關鍵,把所有的重量都加了1000,這樣可以避免一些負數被過濾掉的因素

///例如 5 6 7 可以避免-5被過濾掉 而無法組成2或者1或者8 等。

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

if(j-a[i]>=0)}}

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

while(m--)

}return 0;

}

/*****************

for(int i = 0;i=w[i];j--)

dp[j]|=dp[j-w[i]];

//negative

//逆著來一遍,從揹包中取出東西

for(int i = 0;i

hdu5616(理解01揹包很好的題目)

這題一看到不就是01揹包嗎?直覺想到對不對!有木有!然而,01揹包我們都是正的掃一遍,這裡需要反的再掃一遍,而且揹包裡面不一定非要儲存背的物體的重量,還可以是記錄這個揹包有沒有用過哈 首先要正的掃一遍,就是物品那端不放砝碼,只在另一端放砝碼,看有多少重量可以放到 這裡記錄的是該重量能否被訪問到,所以...

hdu2546 01揹包 重學揹包

題意 給出菜的價錢和自己的餘額。使自己餘額最少,注意餘額大於5的情況可以買任意的菜。思路 小於5的餘額不能買菜,直接輸出,大於五的餘額,留下5元買最貴的菜,剩下的餘額進行01揹包,將剩下的餘額減去01揹包消耗金額最大。就得出答案 include includeusing namespace std ...

飯卡 HDU(揹包問題)

原題目 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一次。已知每種菜的 以及卡上的餘額...