01背包
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int N,V,a[520];
double dp[2010],b[520];
void back()
{
memset(dp,0,sizeof(dp));
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d%lf",&a[i],&b[i]);
scanf("%d",&V);
for(int i=1;i<=N;i++)
{
for(int v=V;v>=a[i];v--)
{
dp[v]=max((double)dp[v],dp[v-a[i]]+b[i]);
}
}
}
int main()
{
int t;
scanf("%d",&t);
for(int i=1;i<=t;i++)
{
double ans=0;
int r=0;
back();
for(int v=1;v<=V;v++)
{
if(ans<dp[v])
{
ans=dp[v];
r=v;
}
}
printf("Problem %d: %d seconds scheduled for $%.2lf\n",i,r,ans);
}
return 0;
}