#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
int use[1005];
int value[1005];
int dp[105][1005];
int fun(int n,int t){
if(dp[n][t]>0)
return dp[n][t];
int ans;
if(n==0){
if(use[n]>t)
ans = 0;
else
ans = value[n];
}
else if (t==0)
ans = 0;
else if(use[n]>t)
ans = fun(n-1,t);
else
ans = max(fun(n-1,t),fun(n-1,t-use[n])+value[n]);
dp[n][t] = ans;
return ans;
}
int main(){
int t,n;
while(scanf("%d %d",&t,&n)!=EOF){
for(int i=0;i<n;i++){
cin>>use[i]>>value[i];
}
memset(dp,0,sizeof(dp));
cout<<fun(n-1,t)<<endl;
}
return 0;
}
KY75 采药
最新推荐文章于 2022-12-04 10:18:54 发布