题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3623
转载代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int N,L;
int T[34],l[34];
int dp[334];
int main()
{
int i,j;
while(scanf("%d%d",&N,&L)!=EOF)
{
for(i=1;i<=N;i++)
scanf("%d%d",&T[i],&l[i]);
memset(dp,0,sizeof(dp));
for(j=1;j<=L;j++)
for(i=1;i<=N;i++)
dp[j+T[i]]=max(dp[j]+l[i]*j,dp[j+T[i]]);
for(i=1;i<=330;i++)
if(dp[i]>=L)
break;
printf("%d\n",i);
}
return 0;
}