poj 1014 Divding DP 多重揹包

2021-09-30 09:01:04 字數 754 閱讀 6434

題意:已近知道兩個人需要將輸入的6個數且每乙個數輸入的位置都有一定的價值,

問他們是否能夠平均分配。

輸入資料:

1 0 1 2 0 0

這個資料代表 價值為1的用乙個,價值為3的有乙個,價值為4的有兩個。

輸入結束為:0 0 0 0 0 0

輸出:can't be divided.

can be divided.

二選一的輸出。

將他轉換為多重揹包,即求是否 體積為總價值一半 的揹包 是否能夠裝滿。

題目分類:dp,看到揹包九講而且能夠將他轉換成揹包。

**:#include

bool opt[60000];

int num = 0;

int a[7];

//該多重揹包沒有使用2進製優化

void dp(int mid)

for ( k=1;k<=a[i];k++) }

}    

max=max+i*a[i]; //更新當前最大值

if (max>mid) max=mid; //如果當前最大值超過了mid,對其賦值為mid

}//輸入該語句時 既是 所有的1 - 6的價值都使用了 仍然不能湊出mid

printf("can't be divided./n/n"); //如果從1到6迴圈完一遍後仍然沒有算出opt[mid],說明無解

} int main()

else

}return 0;

}

poj解題報告 1014

題意 有分別價值為1,2,3,4,5,6的6種物品,輸入6個數字,表示相應價值的物品的數量,問一下能不能將物品分成兩份,是兩份的總價值相等,其中乙個物品不能切開,只能分給其中的某一方,當輸入六個0是 即沒有物品 這程式結束,總物品的總個數不超過20000 如下 include includeint ...

poj 1014 硬幣分割

poj 1014 經典多重揹包問題 by baiwenlei 題目大意 給出一些價值在1 6範圍間的彈珠,判斷是否能夠按照價值等分 解題思路 多重揹包問題,不過本題中若價值不是偶數,直接返回即可 最後注意輸出的時候要求case之間有乙個空行,最後乙個case結束以後不空行。否則presentatio...

POJ 1014 解題報告

這道題我用的是最原始的dfs,雖然加了cache,避免了一些重複運算,但不出意料地tle了。然後就是 優化 把每個value中的item個數減到200以下 看discuss可以取到30甚至6的,還有一堆mod的解法 我都不明白這些優化的原理。見源 中注釋掉的dfs部分。1014 accepted 3...