tyvj 1013 找啊找啊找GF
2024-08-28 12:26:32
题目大意:
有一个背包,里面的东西需要满足两个条件,不只是体积
求最多能装多少东西,这些东西的东西最小价值
思路:
双重背包
开两个数组,记录装的东西数量和价值
#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]);
}
最新文章
- RHEL 6.3 详细安装教程
- Flask 的 Context 机制
- .net使用cefsharp开源库开发chrome浏览器(一)
- 不同浏览器JS获取浏览器高度和宽度
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
- jquery ajax超时设置
- SqlServer中输出错误消息
- hdu 2711&;&;poj2182 Lost Cows (线段树)
- malloc的实现
- Apache-Tika解析JPEG文档
- Python 坑爹之 代码缩进
- (转)IIS7 下部署Asp.net应用
- [Regex Expression] Match mutli-line number, number range
- javascript高级知识点——函数的长度
- android最新更新方法
- Android集成ffmpeg
- .Net下几种ORM框架的对比
- 隐式等待-----Selenium快速入门(九)
- MVP 模式简单易懂的介绍方式
- 插件使用-HighChart