站外题求助
  • 板块题目总版
  • 楼主wangyihan_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/23 17:25
  • 上次更新2024/11/23 20:04:33
查看原帖
站外题求助
1346507
wangyihan_楼主2024/11/23 17:25

70pts

#include<bits/stdc++.h>
using namespace std;
int n,x,m,w[26010],c[26010],f[26010],a,b,k,cnt;
int main()
{
    cin>>n>>m; 
    for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&x,&a,&b);
		k=1;
		while(x>k)
		{
			cnt++;
			w[cnt]=k*a;
			c[cnt]=k*b;
			x-=k;
			k*=2;
		}
		if(x>0)
		{
			cnt++;
			w[cnt]=x*a;
			c[cnt]=x*a;
		}
	}
    for(int i=1;i<=cnt;i++)
      for(int j=m;j>=w[i];j--)f[j]=max(f[j],f[j-w[i]]+c[i]);
	for(int i=1;i<=cnt;i++)x=max(x,f[i]);
	cout<<x;
    return 0;
}
2024/11/23 17:25
加载中...