代码如下:(前3个点AC,后7个点TLE)
#include"bits/stdc++.h"
using namespace std;
int a[101],b[101],kinds,ans=-1;
void dfs(int time,int num,int aans)
{
if (num==kinds)
{
if (a[num]>time)
{
if (aans>ans)
{
ans=aans;
}
return;
}
if (a[num]<=time)
{
if ((aans+b[num])>ans)
{
ans=aans+b[num];
}
return;
}
}
if (time<a[num])
{
dfs(time,(num+1),aans);
}
if (time>=a[num])
{
dfs((time-a[num]),(num+1),(aans+b[num]));
dfs(time,(num+1),aans);
}
}
int main()
{
int tottime;
scanf("%d%d",&tottime,&kinds);
for (int i=1;i<=kinds;i++)
{
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
dfs(tottime,1,0);
printf("%d",ans);
return 0;
}