poj 1014 硬幣分割

2021-06-06 11:19:05 字數 939 閱讀 4128

/*

* poj 1014 經典多重揹包問題 by baiwenlei

** 題目大意: 給出一些價值在1~6範圍間的彈珠,判斷是否能夠按照價值等分

** 解題思路: 多重揹包問題,不過本題中若價值不是偶數,直接返回即可

** 最後注意輸出的時候要求case之間有乙個空行,最後乙個case結束以後不空行。否則presentation error. 我就貢獻了乙個……

* 最後貢獻個資料:

* 92 84 76 104 86 131

* 32 24 16 14 2 1

* 0 0 0 0 0 0

* 這個資料是按照我的那個理論設計的。 兩個都是can。**/

#include namespace }}

inline void complete(int v, int v)}}

inline void multiple(int v, int v, int n)

int r = n;

for (int k=1; k> 1);

for (int i=0; i<=half_value; i++)

reachable[0] = true;

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

return reachable[half_value];

}}int main()

if (sum == 0) break; // 退出條件

cout << "collection #" << n << ":" << endl;

cout << (could_split_fairly(sum) ? "can be divided." : "can't be divided.") << endl << endl;

}return 0;

}

POJ 1014 解題報告

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

POJ1014幾種解法小結

第一種解法 dp 感覺不像 思想 本題是找按價值均分大理石的方案是否存在,由於分配時不能破壞大理石,所以有個顯而易見的剪枝 當所有的大理石的總價值為奇數時肯定不能被均分。把 問題轉化一下即 由乙個人能否從原大理石堆中取出總價值為原來一半的大理石,本題的主要演算法是動態規劃,陣列flag代表狀態,設總...

POJ1014 多重揹包

今天開始dp了,第一道多重揹包,模板題,還是想了很久,太弱了 題意 一行給出6個數,表示從1到6,6個不同權值的個數.求能否將所有權值不分割的分成權值相等的兩份.首先總權值為奇數的肯定不符合要求,接下來就是乙個多重揹包了.多重揹包的二進位制拆分我的理解大概是 首先將乙個數按二進位制拆分之後可以用拆分...