题意:

略;

推荐看一下那个背包九讲,第五讲非常清晰啊。

原文:

算法

费用加了一维,只需状态也加一维即可。设f[i][v][u]表示前i件物品付出两种代价分别为v和u时可获得的最大价值。状态转移方程就是:

f[i][v][u]=max{f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i]}

如前述方法,可以只使用二维的数组:当每件物品只可以取一次时变量v和u采用逆序的循环,当物品有如完全背包问题时采用顺序的循环。当物品有如多重背包问题时拆分物品。这里就不再给出伪代码了,相信有了前面的基础,你能够自己实现出这个问题的程序。

物品总个数的限制(精辟)

有时,“二维费用”的条件是以这样一种隐含的方式给出的:最多只能取M件物品。这事实上相当于每件物品多了一种“件数”的费用,每个物品的件数费用均为1,可以付出的最大件数费用为M。换句话说,设f[v][m]表示付出费用v、最多选m件时可得到的最大价值,则根据物品的类型(01、完全、多重)用不同的方法循环更新,最后在f[0..V][0..M]范围内寻找答案。

在本题的话,就是把经验作为价值,忍受值作为一个费用,个数也是。

然后在里面利用的是完全背包的思想吧。背包九讲能更好的去帮助自己利用这三个背包思想。

//#include <bits/stdc++.h>
#include<iostream>
#include<string.h>
#include<cstdio>
#include<algorithm>
using namespace std; typedef __int64 LL; const int N=1e2+10;
int v[N],c[N];
int dp[N][N];
int main()
{ int n,m,k,s;
int i,j,h;
while(~scanf("%d%d%d%d",&n,&m,&k,&s))
{
for(i=1;i<=k;i++)
scanf("%d%d",&v[i],&c[i]);
memset(dp,0,sizeof(dp));
int ans=0;
for(i=1;i<=k;i++)
{
for(j=c[i];j<=m;j++)
{
for(h=1;h<=s;h++)
{
dp[j][h]=max(dp[j][h],dp[j-c[i]][h-1]+v[i]);
if(dp[j][h]>=n&&m-j>=ans)
ans=m-j;
}
}
}
//printf("%d\n",ans);
if(dp[m][s]<n)
puts("-1");
else
printf("%d\n",ans);
}
return 0;
}

最新文章

  1. webapi+Task并行请求不同接口实例
  2. Mac截图快捷键
  3. Useful related java API for Android
  4. WLLCM这五个字母全排列数目
  5. 如何在标题栏的title前添加网站logo
  6. vue总结
  7. 解决No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource.跨域问题(后台(java)解决方法)
  8. Git push 提交代码到远程global user.name错误解决办法
  9. 学习! ! ! Study! ! !
  10. wamp 3.0.6(apache 2.4.23) 403 forbidden 解决办法
  11. springMVC接收参数的区别form data与query string parameters与request payload
  12. Android apk签名的两种方法
  13. To B运营和To C运营到底有什么区别?
  14. ubuntu 安装 SVN 后的错误:Subversion Native Library Not Available &amp; Incompatible JavaHL library loaded
  15. 从零开始的Python学习Episode 22——多线程
  16. dp - HNU 13404 The Imp
  17. AWS系列-EC2实例选择镜像
  18. Jenkins的安装和使用
  19. Pandas:时间数据的季节分析
  20. struts2 和 js 标签取值

热门文章

  1. 使用zTree进行数据动态显示
  2. SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
  3. XMLHTTPRequest DEMO(发送测试)
  4. XML语法笔记
  5. Nova虚拟机迁移
  6. LeetCode(28)题解:Implement strStr()
  7. java的nio包的SelectionKey,Selector,SelectableChannel三者的缠绵关系概述
  8. 把node加入master节点时,日志内容分析
  9. Ruby中任务构建工具rake的入门
  10. design.js