B - Bone Collector (01揹包)
阿新 • • 發佈:2018-11-01
題目:
塗奧最近迷上了吃雞,房間有n個配件,每個配件有c(c<=1e3)的重量和v(v<=1e3)的價值,哇,塗奧撿了一個2級包,容量為s,所以塗奧最多當多肥的快遞員呢?
Input
輸入的第一行是T, 表示有一共要打T場比賽.
每組資料由三行組成.
第1行包含兩個整數n和s 第2行包含n個整數, 表示每一個配件的價值. 第3行包含n個整數, 表示每個配件的重量.
Output
對每一組資料, 輸出塗奧可以多肥.
Sample Input
1
10 10
1 3 5 7 9 11 13 15 17 19
19 17 15 13 11 9 7 5 3 1
Sample Output
51
程式碼:
#include <iostream>
#include <cstring>
using namespace std;
long long dp[1010];
int main()
{
int t,n,i,s;
long long w[1010],v[1010];
cin>>t;
while(t--)
{
memset(dp,0,sizeof(dp));//注意將dp陣列清空
cin>>n>>s;
for(i=0;i<n;i++)
cin >>v[i];
for(i=0;i<n;i++)
cin>>w[i];
for(i=0;i<n;i++)
for(long long j=s;j>=w[i];j--)
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
cout<<dp[s]<<endl;
}
return 0;
}