只A了一个HACK点,求助
#include <bits/stdc++.h>
using namespace std;
struct point
{
int x, y;
} a[505];
bool cmp(point p, point q)
{
return p.x < q.y;
}
int n, k, maxn, f[505][105];
int main()
{
cin >> n >> k;
for (int i = 1; i <= n; i ++)
{
cin >> a[i].x >> a[i].y;
}
sort(a + 1, a + n + 1, cmp);
for (int i = 1; i <= n; i ++)
{
for (int j = 0; j <= k; j ++)
{
f[i][j] = 1 + j;
}
}
for (int i = 2; i <= n; i ++)
{
for (int j = i - 1; j >= 1; j --)
{
if (a[j].y > a[i].y) continue;
int temp = a[i].x - a[j].x + a[i].y - a[j].y - 1;
for (int l = temp; l <= k; l ++)
{
f[i][l] = max(f[i][l], f[j][l - temp] + temp + 1);
}
}
}
for (int i = 1; i <= n; i ++)
{
maxn = max(maxn, f[i][k]);
}
cout << maxn;
return 0;
}