P3985 不开心的金明 记忆化+map
#include<iostream>
#include<map>
using namespace std;
int w[101],v[101];
map<int,map<int,int> > dp;
int n,W;
long long dfs(int i,int zl)
{
if (dp[i][zl]>0) return dp[i][zl];
if (i==n+1) return 0;
else
{
if(zl>=w[i])
{
return dp[i][zl]=max(dfs(i+1,zl-w[i])+v[i],dfs(i+1,zl));
}
else return dp[i][zl]=dfs(i+1,zl);
}
}
int main()
{
cin>>n>>W;
for (int i=1;i<=n;i++)
{
cin>>w[i]>>v[i];
}
cout<<dfs(1,W);
return 0;
}
浙公网安备 33010602011771号