91pts #1没过 求助
查看原帖
91pts #1没过 求助
757647
zhangzhixing99楼主2024/1/22 13:56
#include <bits/stdc++.h>
using namespace std;

struct Cube
{
	int h, a, c;
	bool operator < (const Cube &cube) const
	{
		return a < cube.a;
	}
} cb[410];

bool f[410][40010];

int main()
{
	f[0][0] = true;
	int n, m = -2e9;
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		cin >> cb[i].h >> cb[i].a >> cb[i].c;
		m = max(m, cb[i].a);
	}
	sort(cb + 1, cb + n + 1);
	for (int i = 1; i <= n; ++i)
	{
		int w = 0;
		for (int k = 1; k <= cb[i].c; ++k)
		{
			w += cb[i].h;
			for (int j = cb[i].a; j >= w; --j)
			{
				f[i][j] = f[i - 1][j] || f[i - 1][j - w];
			}
			for (int j = w - 1; j >= 0; --j)
			{
				f[i][j] |= f[i - 1][j];
			}
		}
	}
	for (int j = m; j >= 0; --j)
	{
		if (f[n][j])
		{
			cout << j << endl;
			return 0;
		}
	}
	return 0; 
}

求助!!!

楼主qaq表示感谢

2024/1/22 13:56
加载中...