hdu 2159 FATE 二维背包

来源:互联网 发布:android 没有网络提示 编辑:程序博客网 时间:2024/06/05 11:18
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>using namespace std;#define LL __int64const int maxn=110;const int INF=1e8;int a[maxn],b[maxn],f[maxn][maxn],m,s,k,n;int main(){    while(cin>>n>>m>>k>>s)    {        int i,j,p;        for(i=0;i<k;i++)            cin>>a[i]>>b[i];        memset(f,0,sizeof(f));        for(i=1;i<=m;i++)        {            for(j=0;j<k;j++)            {                for(p=1;p<=s&&b[j]<=i;p++)                    f[i][p]=max(f[i-b[j]][p-1]+a[j],f[i][p]);            }            if(f[i][s]>=n)break;        }        if(i>m)cout<<-1<<endl;        else cout<<m-i<<endl;    }    return 0;}/*    二维背包    f[i][j]表示消耗i点忍耐度,杀j只怪所能得到的最多的经验*/

原创粉丝点击