這是個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。因為每乙個物品都可以分割成單位塊,單位塊的利益越大顯然總收益越大,所以它區域性最優滿足...