傳送門
分析這轉化,真是夠可以的
首先我們需要得出乙個結論:無論我們怎麼選,最後肯定都有一種選法滿足條件(證明的話,感性理解一下,假設我們現在知道最後打出去的牌是哪些,那我們一定可以調整打牌的順序,使其滿足條件)
然後在此基礎上我們就可以直接使用0/1揹包
將傷害值看做是原牌的價值,魔法值看做是原牌的體積
**
#include
#define in read()
#define n 100009
using
namespace std;
inline
intread()
int n,m;
int val[n]
,c[n]
,f[n]
;int
main()
for(i=
1;i<=n;
++i)
for(j=n;j>=c[i]
;--j)
f[j]
=max
(f[j]
,f[j-c[i]
]+val[i]);
int ans=-1
;for
(i=1
;i<=n;
++i)
ans=
max(ans,f[i]);
cout
}
簡單0 1揹包
第一次部落格求不噴不噴不噴!有乙個容量為v的揹包,要裝進n個物品,第i個物品的費用為ci,價值為wi,要怎樣選擇才可以使花費不超過揹包容量的同時包裡的總價值最大?每個物品只能放一次 當時剛接觸c 的我剛拿到題目就蒙逼了 如果乙個乙個列舉的話有很多種組合,想想心都累。所以就要利用動態規劃思想。什麼是動...
簡單01揹包
time limit 1000ms memory limit 65536k 有疑問?點這裡 這是個什麼問題呢?dp,貪心,資料結構,圖論,數論還是計算幾何?管他呢,反正胖巨巨都會,雖然胖巨巨走得早。現在有n個數xi,現在你要把這些數分成兩組a,b,使得abs sum a sum b 盡可能的小,並且...
簡單01揹包 完全揹包
01揹包問題 有n個重量和價值分別為wi,vi的物品。從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值。1 n 100 1 wi,vi 100 1 w 10000 第一行輸入n的值 接下來n行輸入wi,vi 最後一行輸入w for example input 2 31 2 3...