0-1背包
HDOJ2062 Bone Collector
模板
#include <bits/stdc++.h>//HDOJ无法识别该头文件
using namespace std;
struct Bone{
int val;
int vol;
}bone[1011];
int T,N,V;
int dp[1011][1011];
int ans(){
memset(dp,0,sizeof(dp));
for(int i=1;i<=N;i++)
{
for(int j=0;j<=V;j++)
{
if(bone[i].vol>j)
{
dp[i][j]=dp[i-1][j];
}
else
{
dp[i][j]=max(dp[i-1][j-bone[i].vol]+bone[i].val,dp[i-1][j]);
}
}
}
return dp[N][V];
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&N,&V);
for(int i=1;i<=N;i++)scanf("%d",&bone[i].val);
for(int i=1;i<=N;i++)scanf("%d",&bone[i].vol);
printf("%d\n",ans());
}
return 0;
}
中国大学MOOC
北航 算法设计与分析