蒟蒻疑问
  • 板块P1802 5 倍经验日
  • 楼主sxyn
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/10/5 15:32
  • 上次更新2023/11/5 11:56:42
查看原帖
蒟蒻疑问
197479
sxyn楼主2020/10/5 15:32

求助

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,x;
long long lose[1005],win[1005],use[1005];
long long f[1005];
int main()
{
	cin>>n>>x;
	for(int i=1;i<=n;i++)
		cin>>lose[i]>>win[i]>>use[i];
	for(int i=1;i<=n;i++)
	{
		for(int j=x;j>=0;j--)
		{
			if(j>=use[i])
				f[j]=max(f[j]+lose[i],f[j-use[i]]+win[i]);
			else f[j]+=f[j]+lose[i];
		}
	}
	cout<<f[x]*5<<endl;
	return 0;
}

——为什么这样不行

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,x;
long long lose[1005],win[1005],use[1005];
long long f[1005];
int main()
{
	cin>>n>>x;
	for(int i=1;i<=n;i++)
		cin>>lose[i]>>win[i]>>use[i];
	for(int i=1;i<=n;i++)
	{
		for(int j=x;j>=use[i];j--)
			f[j]=max(f[j]+lose[i],f[j-use[i]]+win[i]);
		for(int j=use[i]-1;j>=0;j--)
			f[j]+=lose[i];
	}
	cout<<f[x]*5<<endl;
	return 0;
}

——这样可以

(逃

2020/10/5 15:32
加载中...