博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dp之多维背包hdu4501
阅读量:6084 次
发布时间:2019-06-20

本文共 1444 字,大约阅读时间需要 4 分钟。

思路:将v1,v2,k都当作一种体积,每种物品只能取一次,求max.......

反思:以前写背包,由于只有一个体积,所以习惯性的在for中,就所取的最小值限制,而在这次,因为这里导致wa了,具体是因为在多个体积限制的背包里,当这个体积小于它的最小体积时,它可以不去减它的最小体积,而是作为一种状态来传递其他体积的限制的值........

wa代码:

#include
#include
#include
using namespace std;int dp[105][105][110],s[105][3];int max(int x,int y){ if(x>y) return x; else return y;}int main(){ int n,v1,v2,k; while(scanf("%d%d%d%d",&n,&v1,&v2,&k)>0) { for(int i=1;i<=n;i++) scanf("%d%d%d",&s[i][0],&s[i][1],&s[i][2]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=v1;j>=s[i][0];j--) { for(int p=v2;p>=s[i][1];p--) { for(int q=k;q>=0;q--) { int maxx=0; if(maxx
0&&maxx

 ac代码:

#include
#include
#include
using namespace std;int dp[105][105][110],s[105][3];int max(int x,int y){ if(x>y) return x; else return y;}int main(){ int n,v1,v2,k; while(scanf("%d%d%d%d",&n,&v1,&v2,&k)>0) { for(int i=1;i<=n;i++) scanf("%d%d%d",&s[i][0],&s[i][1],&s[i][2]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=v1;j>=0;j--) { for(int p=v2;p>=0;p--) { for(int q=k;q>=0;q--) { int maxx=0; if(j>=s[i][0]&&maxx
=s[i][1]&&maxx
0&&maxx

 

转载地址:http://aazwa.baihongyu.com/

你可能感兴趣的文章
使用MindFusion JavaScript组件与WordPress Elementor插件
查看>>
Google Docs 开始支持最大单个10GB文件上传
查看>>
Android设计应用图标不用愁---Asset Studio Integration来帮你 .
查看>>
Centos 6.5安装oracle 11g
查看>>
Linux 下DNS配置管理
查看>>
安装nagios 登陆后提示nagios Internal Server Error
查看>>
从django的注册机制探究class-based views
查看>>
收集的Haskell资源
查看>>
Jmeter视频教程全部录制完毕
查看>>
将DB2表合理映射到表空间
查看>>
xml 文件常用的解析
查看>>
Mysql源码和二进制安装
查看>>
Hyper-V 2016 配置管理系列(Part3)
查看>>
网络结构中,我们非得有汇聚交换机么?
查看>>
我的友情链接
查看>>
linux中rsync配置
查看>>
新手IT人员,如何找到适合自己专业书籍的6个问题?
查看>>
去除JSP主机默认的8080端口
查看>>
关系型数据库之mysql-proxy实现读写分离
查看>>
EMC模拟器下载
查看>>