noip2005-采药

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

using namespace std;
const int maxn=1005;
int d[maxn][maxn];
int t[maxn],w[maxn];
int time1,m,ans=-1;
int ()
{
scanf("%d%d",&time1,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&t[i],&w[i]);
}
for(int i=1;i<=m;i++)
for(int j=1;j<=time1;j++)
{
d[i][j]=d[i-1][j];
if(t[i]<=j)
d[i][j]=max(d[i][j],d[i-1][j-t[i]]+w[i]);
}
for(int i=1;i<=time1;i++)
ans=max(ans,d[m][i]);
printf("%dn",ans);
}