題意 :題目鏈結
分析 :
如果沒有 bug (即 h == 0 的時候)就是乙個普通的 0 / 1 揹包
需要討論一下 h != 0 的情況
此時有就相當於有物品是有特權的
而且揹包裝有特權的物品根據題目的要求是應當最後裝的
也就是說特權物品裝完之後揹包將不再可裝
所以特權物品肯定是只有乙個的
資料量並不大,所以可以去列舉這個特權物品
那麼如何知道在 沒有裝特權物品 之前的最佳選擇方案?
答案就是用最小的可剩空間留給特權物品,然後其他空間去跑 0/1 揹包
最小的可剩空間當然就是 h + m - 1,只留乙個單位空間給特權物品即可
最後除了列舉的物品,其他的物品去跑揹包容量為 h + m - 1 的 0/1 揹包
#includeusingview codenamespace
std;
const
int maxn = 1e2 + 10
;int w[maxn], v[maxn], dp[maxn<<1
];int
c, n, m, h;
int main(void
) }
ans = max(ans, dp[c-1] + v[k]);///
最後維護最優值
} }
printf(
"%d\n
", ans);
}return0;
}
TaoTao要吃雞 (牛客 01揹包)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld taotao的電腦帶不動絕地求生,所以taotao只能去玩pc版的荒野行動了,和絕地求生一樣,遊戲人物本身可以攜帶一定重量m的物品,裝備揹包 之後可以多攜帶h h為0代...
TaoTao要吃雞(01揹包)
題目描述 taotao的電腦帶不動絕地求生,所以taotao只能去玩pc版的荒野行動了,和絕地求生一樣,遊戲人物本身可以攜帶一定重量m的物品,裝備揹包 之後可以多攜帶h h為0代表沒有裝備揹包 重量的東西。玩了幾天 taotao發現了乙個bug,當裝備揹包之後,如果可攜帶重量沒有滿,就 可以拿乙個任...
TaoTao要吃雞(01揹包)
題目戳我 思路 當h 0時直接套01揹包即可。當h 0時能卡bug,我們假設第k個 是卡bug放進去的,那麼我們只需用01揹包求出承受m h 1重量時的最大價值,那麼此後的最大價值為dp m h 1 第k個價值,故只需1 n列舉 define first f define second s defi...