ZJUT1551 分糖 01揹包

2021-05-24 08:16:46 字數 669 閱讀 9497

這是個01揹包問題。

把總糖果和除以2得出v,相當於揹包的容量。

然後從所有數中挑選出最接近v的值,即為要求的乙個解,總和減v則得到另乙個解。

本來看這道題沒什麼思路,想到可能是01揹包,但是不敢確定。

碰巧瀏覽乙個牛人部落格的時候看到一道類似的,說可以這樣做,便試了一下,果真可以。

不過時間上沒有優化。

以下貼**:

#include

using namespace std;

int max(int a, int b)

int main()

v = sum/2;

dp = (int*)malloc(sizeof(int)*v+5);

for (i=0; i=a[i]; j--)

}i = *(dp+v);

if (p==1) printf("/n");

p = 1;

printf("%d %d/n", i, sum-i);

free(dp);

} return 0;

}p.s.今天本來要學習圖演算法,結果還是看了好幾道dp的題而且做了幾道。由於和之前的有點類似,便不拿出來寫了。

NYOJ 還是01揹包(列舉 二分)

還是01揹包 時間限制 10000 ms 記憶體限制 228000 kb 難度 5 描述有n個重量和價值分別為 wi 和 vi 的物品,從這些物品中挑選總重量不超過w的物品,求所有挑選方案中價值總和的最大值。輸入多組測試資料。每組測試資料第一行輸入n 和 w 接下來有n行,每行輸入兩個數,代表第i個...

QDUOJ 93 分辣條 01揹包

描述 你喝的酸奶是我買的,辣條也是我買的,你現在要跟我分手,你把我當什麼?因為你每次分辣條的時候都比我多一根!可見分好辣條是一件多麼重要的事情。現在有n 1 n 200 根辣條,每根辣條的重量為a1,a2 ai.an 1 ai 100 那麼能不能把這些辣條分為重量相等的兩份呢?輸入 輸入有多組資料。...

貪心演算法 0 1部分揹包問題

給定n種物品和乙個揹包。物品i的重量是wi,其價值為vi,揹包的容量為c。應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大 選擇物品i裝入揹包時,可以選擇物品i的一部分,而不一定要全部裝入揹包,1 i n。因為每乙個物品都可以分割成單位塊,單位塊的利益越大顯然總收益越大,所以它區域性最優滿足...