我只想混个70分的,没想到直接AC了
#include <bits/stdc++.h>
int t, n, m;
const int maxn = 105;
int p[maxn][maxn];
int Max[maxn];
int f[10005];
int main ()
{
scanf("%d%d%d", &t, &n, &m);
for (int i = 1; i <= t; i++)
{
for (int j = 1; j <= n; j++)
{
scanf("%d", &p[i][j]);
}
}
Max[1] = m;
for (int i = 1; i <= t; i++)
{
for (int j = i + 1; j <= t; j++)
{
for (int k = 0; k < 10005; k++)
{
f[k] = -1e9;
}
f[0] = 0;
for (int k = 1; k <= n; k++)
{
if (p[j][k] <= p[i][k]) continue;
for (int tt = p[i][k]; tt <= Max[i]; tt++)
{
f[tt] = std::max(f[tt], f[tt - p[i][k]] + p[j][k]);
}
}
for (int k = 0; k <= Max[i]; k++)
{
Max[j] = std::max(Max[j], f[k] + Max[i] - k);
}
}
}
std::cout << Max[t] << "\n";
}