HDU 2191多重背包问题、
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
const int qq=+;
int v[qq],w[qq],dp[qq];
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n,m;
scanf("%d %d",&n,&m);
memset(dp,,sizeof(dp));
memset(v,,sizeof(v));
memset(w,,sizeof(w));
int count=;
for(int i=;i<m;++i){
int value,weight,tot;
scanf("%d %d %d",&value,&weight,&tot);
int t=;
while(tot>=t){
v[count]=t*value;
w[count++]=t*weight;
tot-=t;
t<<=;
}
if(tot){
v[count]=tot*value;
w[count++]=tot*weight;
}
}
for(int i=;i<count;++i)
for(int j=n;j>=v[i];--j) //j必须从n开始dp,如果循序开始dp的话v[i]会被取多次
dp[j]=max(dp[j],dp[j-v[i]]+w[i]); //也就是说达不到01背包要求的v[i]只有取和不取两种状态、
printf("%d\n",dp[n]);
}
}
算法时间复杂度O(V*∑log n[i])
总算是理解了为什么要逆序dp
#include <stdio.h>
.#include <string.h>
.#include <algorithm>
.using namespace std;
.int main()
.{
. int ncase,p[],w[],c[],dp[];
. scanf("%d",&ncase);
. while(ncase--)
. {
. int n,m,count=;
. scanf("%d %d",&n,&m);
. for(int i=;i<m;i++)
. scanf("%d %d %d",&p[i],&w[i],&c[i]);
. memset(dp,,sizeof(dp));
. int temp=;
. for(int i=;i<m;i++)
. {
. for(int j=n;j>=p[i];j--)//唉在这里又错了几次 要倒着来。
. {
. for(int k=;k<=c[i];k++)
. {
. if(j<k*p[i]) break;
. dp[j]=max(dp[j-k*p[i]]+k*w[i],dp[j]);
. if(dp[j]>temp)
. temp=dp[j];
. }
. }
. }
. printf("%d\n",temp);
. }
. return ;
.}
上述代码是借鉴别人的、 也是多重背包最原始的解法
时间复杂度O(V*∑n[i])
HDU 2191多重背包问题、的更多相关文章
- HDU 1114 完全背包 HDU 2191 多重背包
HDU 1114 Piggy-Bank 完全背包问题. 想想我们01背包是逆序遍历是为了保证什么? 保证每件物品只有两种状态,取或者不取.那么正序遍历呢? 这不就正好满足完全背包的条件了吗 means ...
- hdu 2191 (多重背包+二进制优化)
Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...
- hdu 2191 多重背包
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- hdu 2191多重背包
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 【HDU】2191 多重背包问题
原题目:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 [算法]多重背包(有限背包) 动态规划 [题解]http://blog.csdn.net/acdreamers/article/detail ...
- hdu 2191 多重背包 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
http://acm.hdu.edu.cn/showproblem.php?pid=2191 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- hdu 2191 (多重背包二进制优化)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 实现代码: #include<bits/stdc++.h> using namespac ...
- HDU 1059 多重背包问题
问题大意: 有价值1-6的六种物品,分别规定其数目,问是否存在一种方法能使这些物品不拆分就能平均分给两个人 #include <cstdio> #include <cstring&g ...
- hdu 2191 【背包问题】
题目 请输出能够购买大米的最多重量,注意是重量不是价值. 把每一种物品拧出来,用01背包解决. #include <cstdio> #include <iostream> #i ...
随机推荐
- 【每日一linux命令7】用户及用户组
一.查询用户及用户组相关命令 1.whoami 查询当前登录的用户名 2.groups 查询当前登录用户名所在的用户组 3.groups root 查询root用户名所在的用户组 二.怎么批量查看用户 ...
- 常用命令3-文件搜索命令1-locate
新建文件搜索不到,是因为查询是从数据库里查询的,然后数据库是一天后才更新,但是可以强制更新. 优点:能进行模糊搜索. 在tmp目录下创建一个文件,发现,在root家目录下搜不到.是因为配置文件原因. ...
- UE4碰撞规则详解
UE4的碰撞设置在官方的文档的 物理模拟模块(链接:点击打开链接).但是操作起来感觉坑还是比较多,所以这里总结一下,以防平时经常会漏掉或忽略某些条件.如果想看关于碰撞响应触发,可以参考链接( UE4蓝 ...
- Elasticsearch 启动需要密码?
vagrant@homestead:~$ systemctl disable elasticsearch.service Synchronizing state of elasticsearch.se ...
- 遗传算法MATLAB实现(1):工具箱下载及安装
到官网下载谢菲尔德大学的GA工具箱:http://codem.group.shef.ac.uk/index.php/ga-toolbox(其实蛮不懂为什么有人把这个传到某个网上还需要积分才能下载,人家 ...
- Dubbo报org.I0Itec.zkclient.exception.ZkNoNodeException异常
解决办法就是添加zkclient的jar,maven工程的话增加如下引用: <dependency> <groupId>com.github.sgroschupf< ...
- 百度语音识别REST API用法(含JAVA代码)——不须要集成SDK的方法
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/32329457 上一篇文章http://blog.c ...
- 新xcode的literal syntax是什么
New Objective-C Literal Syntax for NSArray, NSDictionary 是以@字符开始的方式简单地创建数组.字典.NSNumber常量. 代码如下: NSNu ...
- ADT上跑java application
Invalid layout of java.lang.String at value## A fatal error has been detected by the Java Runtime En ...
- [asp.net]登录协同工作平台安全解决方式
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/david_520042/article/details/25372207 [摘要]公司领导说登录验证 ...