代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int p=1e4+10;
int m1[p],w[p],f[p];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&m1[i],&w[i]);
w[i]+=m1[i];
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=1;j--)
{
if(j>=m1[i])
{
f[j]=max(f[j],f[j-m1[i]]+w[i]);
}
}
}
if(f[m]>0)
{
cout<<f[m];
}
else
{
cout<<"No more chances for you!";
}
return 0;
}
因为机房四人均抖M,所以每次可获取的快乐值要加上扣除的机会值,但不知道为什么每个活动只可以做一次,题中貌似也没有声明,用01背包的板子就好了
共 2 条回复
dalao%%%