#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表示感谢