比赛 |
20120807 |
评测结果 |
WWWWWWWWWW |
题目名称 |
宝物筛选 |
最终得分 |
0 |
用户昵称 |
Truth.Cirno |
运行时间 |
0.142 s |
代码语言 |
C++ |
内存使用 |
76.77 MiB |
提交时间 |
2012-08-07 10:39:26 |
显示代码纯文本
#include <cstdio>
using namespace std;
int f[40001],w[10000001],v[10000001],squ[10000]={1};
int main(void)
{
freopen("treasure.in","r",stdin);
freopen("treasure.out","w",stdout);
int i,j,temp,n,W,c=0,vt,wt,mt;
for (i=1;i<10000;i++)
squ[i]=2*squ[i-1];
scanf("%d%d",&n,&W);
for (i=0;i<n;i++)
{
scanf("%d%d%d",&vt,&wt,&mt);
for (temp=0;;temp++)
if (squ[temp]>mt)
break;
temp--;
for (j=0;j<temp;j++)
{
v[c]=vt*squ[j];
w[c]=wt*squ[j];
c++;
}
temp=mt-squ[temp-1];
if (temp)
{
v[c]=vt*temp;
w[c]=wt*temp;
c++;
}
}
for (i=0;i<c;i++)
for (j=W;j>=w[i];j--)
{
temp=f[j-w[i]]+v[i];
if (f[j]<temp)
f[j]=temp;
}
printf("%d\n",f[W]);
return(0);
}