Paul_Guderian 2016-10-14 02:50:40
点我顶贴
收藏
删除
#include<stdio.h>
#include<algorithm>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define ro(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
int n,m,t,f[1005][1005],w,v,ans=0;
int main()
{
scanf("%d%d%d",&n,&m,&t);
go(k,1,n)
{
scanf("%d%d",&v,&w);
ro(i,m,1)
if(k>=i)
{ro(j,t,v)
{if(f[i-1][j-v]||(i==1&&j==v))
f[i][j]=max(f[i][j],f[i-1][j-v]+w);}
go(i,1,t)ans=max(ans,f[m][i]);}
}
printf("%d",ans);
return 0;
}//【一类限制物品数量的背包】