hdu 2159 FATE(二维费用完全背包)

来源:互联网 发布:优化人力资源配置 编辑:程序博客网 时间:2024/06/05 23:45

看题目请点这里

题意:

中文题不解释。

代码:

#include<iostream>using namespace std;int main(){int n,m,k,s,i,j,l,ans,a[101],b[101],dp[101][101];while(scanf("%d %d %d %d",&n,&m,&k,&s)!=EOF){for(i=0;i<k;i++){scanf("%d %d",a+i,b+i);}memset(dp,0,sizeof(dp));ans=-1;for(i=0;i<k;i++){for(j=b[i];j<=m;j++)   //j表示用掉的忍耐度{for(l=1;l<=s;l++)   //l表示杀怪数{if(dp[j][l]<dp[j-b[i]][l-1]+a[i] ){dp[j][l]=dp[j-b[i]][l-1]+a[i];}if(dp[j][l]>=n && ans < m-j)   //找剩余的最大忍耐度{ans=m-j;}}}}printf("%d\n",ans);}return 0;}


 

原创粉丝点击