01背包有误?
查看原帖
01背包有误?
399250
AffineRing楼主2020/11/9 22:03

我第一个点就WA了,并且只有第一个点WA。

此题似乎并未说必须要吃xx瓶药,所以为何不能将整个ff都算一遍,并取最大值?为什么必须输出5fx5f_x

下面是第一个点WA的90分代码

#include<bits/stdc++.h>
using namespace std;
long long n,x,f[1005],ans,u[1005],w[1005],l[1005];
int main(){
	cin>>n>>x;
	for(int i=1;i<=n;i++)cin>>l[i]>>w[i]>>u[i];
	for(int i=1;i<=n;i++)
		for(int j=x;j>=0;j--)
			if(j>=u[i])f[j]=max(f[j]+l[i],f[j-u[i]]+w[i]);
			else f[j]+=l[i];
	for(int i=1;i<=x;i++)ans=max(ans,f[i]*5);
	cout<<ans;
	return 0;
}

改成cout<<f[x]*5直接就过了

2020/11/9 22:03
加载中...