小梁的揹包(01揹包 一維陣列)

2022-06-18 14:18:14 字數 1286 閱讀 1507

時間限制: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 每件物品只能用一次,求解將哪些物品裝入揹包裡物品價值總和最大。這是標準的揹包問題,以至於很多同學看了這個自然就會想到揹包,甚至都不知道暴力的解法應該怎麼解了。這樣其實是沒有從底向上去思考,而是習...