救命,一个都没对。
查看原帖
救命,一个都没对。
574879
weiegzqs楼主2022/9/14 21:11
#include<bits/stdc++.h>
using namespace std;
const int N=1000000;
int n,m;
int v[N],w[N],f[N];
int main()
{
	cin>>n>>m;
	int ans=0;
	for (int i=1;i<=n;i++)
	{
		int a,b,s;
		cin>>a>>b>>s;
		int k=1;
		while(k<=s)
		{
			ans++;
			v[ans]=a*k;
			w[ans]=b*k;
			s-=k;
			k*=2;
		}
		if (s>0)
		{
			ans++;
			v[ans]=a*s;
			w[ans]=b*s;
		}
	}
	for (int i=1;i<=ans;i++)
	{
		for (int j=m;j>=v[i];j--)
		{
			f[j]=max(f[j],f[j-v[i]]+w[i]);
		}
	}
	cout<<f[m]<<endl;
	return 0;
}

看了又看没看出问题。

球指点。

2022/9/14 21:11
加载中...