求助,这道题为什么不能用输的变赢的方法用01背包做
查看原帖
求助,这道题为什么不能用输的变赢的方法用01背包做
171295
WHJ___楼主2020/7/7 16:57
#include<bits/stdc++.h>
#define R register
#define I int
#define il inline
#define ll long long
using namespace std;
I n,dp[1001],lose[1001],win[1001],c[1001],w[1001],tot,m;
int main()
{
	R I i,j;
	cin>>n>>m;
	for(i=1;i<=n;++i)
	cin>>lose[i]>>win[i]>>w[i],tot+=lose[i],c[i]=win[i]-lose[i];
	for(i=1;i<=n;++i)
	dp[i]=tot;
	for(i=1;i<=n;++i)
		for(j=m;j>=w[i];--j)
			if(dp[j]<dp[j-w[i]]+c[i])
				dp[j]=dp[j-w[i]]+c[i];
	cout<<dp[m]*5;
	return 0; 
}

代码如图,10分

2020/7/7 16:57
加载中...