采药

最基础的0-1背包问题,没什么好说的
`#include

include

include

include<math.h>

using namespace std;

const int N=2e5+7;
int t,m;
int lst[107][2];
int memory[107][1007]={0};

int solve(int a,int b){
if(a0||b0) return 0;
if(memory[a][b]!=-1){
return memory[a][b];
}
if(lst[a][0]>b){
return solve(a-1,b);
}
memory[a][b]=max(solve(a-1,b),solve(a-1,b-lst[a][0])+lst[a][1]);
return memory[a][b];
}

int main(){
scanf("%d %d",&t,&m);
for(int i=1;i<=m;i++){
scanf("%d %d",&lst[i][0],&lst[i][1]);
}
for(int i=0;i<107;i++){
memset(memory[i],-1,sizeof(int)*1007);
}
int sum=solve(m,t);
printf("%d",sum);
return 0;
}`

posted @ 2025-02-16 20:08  十柒*  阅读(2)  评论(0编辑  收藏  举报