还有机会吗?题解

long_hao 2022-02-22 17:06:21 2022-02-23 18:37:14

代码:

#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 条回复

Laffey

nb_{nb^{nb_{nb^{nb_{nb^{nb_{nb^{nb_{nb}}}}}}}}}

Laffey

dalao%%%