01 P1048 [NOIP2005 普及组] 采药
题目:
样例输入:
70 3
71 100
69 1
1 2
样例输出:
3
答案:
#include<bits/stdc++.h>
using namespace std;
int ti[105];
int va[105];
int dp[105][1005];
int main()
{
int T,M;cin>>T>>M;
for(int i=1;i<=M;i++)
{
cin>>ti[i]>>va[i];
}
for(int i=1;i<=M;i++)
{
for(int j=1;j<=T;j++)
{
if(ti[i]>j)
{
dp[i][j]=dp[i-1][j];
}
else
{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-ti[i]]+va[i]);
}
}
}
cout<<dp[M][T]<<endl;
}