#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 4010
using namespace std;
typedef long long ll;
struct node
{
int a,b;
friend istream& operator >> (istream &_,node &x)
{
scanf("%d%d",&x.a,&x.b);
return _;
}
}a[N];
bool cmp(node a,node b)
{
return a.a>b.a;
}
ll f[N][N];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1,cmp);
for(int i=0;i<=n;i++)
{
for(int j=0;j<=n+1;j++)f[i][j]=-0x3f3f3f3f;
}
f[0][1]=0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=n;j++)
{
f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].a,0)+1]+a[i].b);
}
}
ll ans=-0x3f3f3f3f;
for(int i=0;i<=n;i++)
ans=max(ans,f[n][i]);
printf("%lld\n",ans);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wzq_qwq/article/details/48366923