记忆化搜索爆栈?
#include"stdio.h"
#include"algorithm"
using namespace std;
int t, m;
long mem[10000003];
int val[10003];
int time[10003];
long dfs(int timeuse) {
if (mem[timeuse] > 0)
return mem[timeuse];
long tmp = 0;
for (int i = 1; i <= m; i++) {
if (timeuse + time[i] > t)
continue;
tmp = max(dfs(timeuse + time[i]) + val[i], tmp);
}
return mem[timeuse] = tmp;
}
int main() {
scanf("%d%d",&t,&m);
for (int i = 1; i <= m; i++) {
scanf("%d",&time[i]);
scanf("%d",&val[i]);
}
long ans = dfs(0);
printf("%lld",ans);
return 0;
}