#include "stdio.h"
#include "string.h"
int dp[1050][1050];
int jy[1005],rn[1005];
int n,m,k,s;
int main()
{
while( scanf("%d%d%d%d",&n,&m,&k,&s)==4 )
{
memset(dp,0,sizeof(dp));
int i,j,q,flag=m+1;
for(i=1;i<=k;i++)
{
scanf("%d%d",&jy[i],&rn[i]);
for( j=1;j<=s;j++ )
{
for( q=rn[i];q<=m;q++ )
{
if( dp[j][q] < dp[j-1][q-rn[i]]+jy[i] )
dp[j][q] = dp[j-1][q-rn[i]]+jy[i];
if( dp[j][q]>=n && q<=flag )
flag=q;
}
}
}
/* for( i=0;i<m+1;i++ )
{
if( dp[s][i]>=n )
break;
}*/
if( flag==m+1 )
printf("-1\n");
else
printf("%d\n",m-flag);
}
return 0;
}
hdu-2151 二维背包
最新推荐文章于 2017-08-13 11:54:23 发布