時間限制:c/c++ 2秒,其他語言4秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
題目描述
小梁來到了伽勒爾地區並參加了聯盟賽熱身賽,比賽小島上有n個精靈散落在島上各處,她有乙個大小為s的揹包,每個精靈的戰鬥值為vi,體積為wi。
請問在她臨走之前揹包內寶可夢的戰鬥力總和最多為多少,並輸出其戰鬥值總和sum以及揹包內的精靈數量ans。
輸入描述:
輸入乙個整數t(1≤t≤200)表示測試組數
每組資料的第一行有兩個整數 n,s(1≤n,s≤10^4)
接下來有n行資料,每行兩個代表寶可夢體積wi和戰鬥值vi(1≤wi,vi≤10^4)
輸出描述:
輸出t組,每組一行sum 和 ans
樣例輸入
155
1325
1242
61
樣例輸出10
3
**:
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#define x first
#define y second
#define inf 0x3f3f3f3f
#define p pair
using
namespace std;
typedef
long
long ll;
const
double eps=
1e-6
;const
int n=
1e4+10;
const
int maxn=
2e9;
const
int mod=
1000000007
;int w[n]
,v[n]
,f[n]
;int t,n,s,dp[n]
;int
main()
for(
int i=
1;i<=n;i++)}
cout<<<
' '<<}return0;
}
01揹包與完全揹包一維陣列的對比
在這我就廢話少說,直接貼上 供我們來比較一下啊。一 宣告乙個 大小為 dp c 的二維陣列,表示 面對於前i個物品,能獲得的最大容量 也可以看成從前往後推 那麼我們可以很容易找出它的 狀態轉移方程 dp c max dp c dp j w i v i j w i for int i 1 i n i ...
0 1揹包使用一維陣列
使用滾動陣列將空間優化到了2 v,在揹包九講中提到了使用一維陣列也可以達到同樣的效果,個人認為這也是滾動思想的一種,由於使用一維陣列解01揹包會被多次用到,完全揹包的一種優化實現方式也是使用一維陣列,所以我們有必要理解這種方法。如果只使用一維陣列f 0 v 我們要達到的效果是 第i次迴圈結束後f v...
一維dp陣列01揹包
有n件物品和乙個最多能被重量為w 的揹包。第i件物品的重量是weight i 得到的價值是value i 每件物品只能用一次,求解將哪些物品裝入揹包裡物品價值總和最大。這是標準的揹包問題,以至於很多同學看了這個自然就會想到揹包,甚至都不知道暴力的解法應該怎麼解了。這樣其實是沒有從底向上去思考,而是習...