#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int V;
int v[150],c[150];
int hash[15][15],dp[100500];
void BB(int v,int c)
{
int i;
for(i=V;i>=v;i--)
dp[i]=max(dp[i],dp[i-v]+c);
}
void solve(int a,int b,int x)
{
int t=1;
while(x>=t)
{
BB(a*t,b*t);
x-=t;
t<<=1;
}
if(x)
BB(a*x,b*x);
}
int main()
{
int n,i,a,b;
char str[100];
while(scanf("%d%d",&n,&V)!=EOF)
{
memset(hash,0,sizeof(hash));
memset(dp,0,sizeof(dp));
int cnt=0;
for(i=0;i<n;i++)
{
scanf("%s%d%d",str,&b,&a);
if(!hash[a][b])
{
v[cnt]=a;
c[cnt++]=b;
}
hash[a][b]++;
}
for(i=0;i<cnt;i++)
solve(v[i],c[i],hash[v[i]][c[i]]);
printf("%d\n",dp[V]);
}
return 0;
}
hdu 3732
最新推荐文章于 2017-07-01 22:38:00 发布