题目大意:

有一个背包,里面的东西需要满足两个条件,不只是体积

求最多能装多少东西,这些东西的东西最小价值

思路:

双重背包

开两个数组,记录装的东西数量和价值

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
#define inf 2147483611
#define ll long long
#define MAXN 110
using namespace std;
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,na[MAXN],nb[MAXN],v[MAXN],a,b;
int dpn[MAXN][MAXN],dpt[MAXN][MAXN];
int main()
{
n=read();
for(int i=;i<=n;i++) na[i]=read(),nb[i]=read(),v[i]=read();
a=read(),b=read();
for(int k=;k<=n;k++)
for(int i=a;i>=na[k];i--)
for(int j=b;j>=nb[k];j--)
{
if(dpn[i][j]==dpn[i-na[k]][j-nb[k]]+)
dpt[i][j]=min(dpt[i-na[k]][j-nb[k]]+v[k],dpt[i][j]);
if(dpn[i][j]<dpn[i-na[k]][j-nb[k]]+)
{
dpn[i][j]=dpn[i-na[k]][j-nb[k]]+;
dpt[i][j]=dpt[i-na[k]][j-nb[k]]+v[k];
}
}
printf("%d",dpt[a][b]);
}

最新文章

  1. RHEL 6.3 详细安装教程
  2. Flask 的 Context 机制
  3. .net使用cefsharp开源库开发chrome浏览器(一)
  4. 不同浏览器JS获取浏览器高度和宽度
  5. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
  6. jquery ajax超时设置
  7. SqlServer中输出错误消息
  8. hdu 2711&amp;&amp;poj2182 Lost Cows (线段树)
  9. malloc的实现
  10. Apache-Tika解析JPEG文档
  11. Python 坑爹之 代码缩进
  12. (转)IIS7 下部署Asp.net应用
  13. [Regex Expression] Match mutli-line number, number range
  14. javascript高级知识点——函数的长度
  15. android最新更新方法
  16. Android集成ffmpeg
  17. .Net下几种ORM框架的对比
  18. 隐式等待-----Selenium快速入门(九)
  19. MVP 模式简单易懂的介绍方式
  20. 插件使用-HighChart

热门文章

  1. ruby cloud9部署到heroku
  2. Python之微信-微信机器人
  3. 2017 GDCPC 省赛总结
  4. c语音 dll断点调试方法
  5. jquery给span赋值
  6. [luoguP1328] 生活大爆炸版石头剪刀布(模拟)
  7. MyChrome制作Chrome浏览器便携版
  8. 【NOIP2016】蚯蚓(单调队列)
  9. Codeforces704B. Ant Man
  10. 【重要】MySQL常见面试题