dp之多维背包hdu4501
思路:将v1,v2,k都当作一种体积,每种物品只能取一次,求max.......
反思:以前写背包,由于只有一个体积,所以习惯性的在for中,就所取的最小值限制,而在这次,因为这里导致wa了,具体是因为在多个体积限制的背包里,当这个体积小于它的最小体积时,它可以不去减它的最小体积,而是作为一种状态来传递其他体积的限制的值........
wa代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
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<dp[j-s[i][0]][p][q]+s[i][2])
maxx=dp[j-s[i][0]][p][q]+s[i][2]; if(maxx<dp[j][p-s[i][1]][q]+s[i][2])
maxx=dp[j][p-s[i][1]][q]+s[i][2]; if(q>0&&maxx<dp[j][p][q-1]+s[i][2])
maxx=dp[j][p][q-1]+s[i][2]; if(maxx<dp[j][p][q])
maxx=dp[j][p][q];
dp[j][p][q]=maxx;
}
}
}
}
printf("%d\n",dp[v1][v2][k]);
}
return 0;
}
ac代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
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<dp[j-s[i][0]][p][q]+s[i][2])
maxx=dp[j-s[i][0]][p][q]+s[i][2]; if(p>=s[i][1]&&maxx<dp[j][p-s[i][1]][q]+s[i][2])
maxx=dp[j][p-s[i][1]][q]+s[i][2]; if(q>0&&maxx<dp[j][p][q-1]+s[i][2])
maxx=dp[j][p][q-1]+s[i][2]; if(maxx<dp[j][p][q])
maxx=dp[j][p][q];
dp[j][p][q]=maxx;
}
}
}
}
printf("%d\n",dp[v1][v2][k]);
}
return 0;
}
dp之多维背包hdu4501的更多相关文章
- dp之二维背包poj2576
题意:有一群sb要拔河,把这群sb分为两拨,两拨sb数只差不能大于1,输出这两拨人的体重,小的在前面...... 思路:把总人数除2,总重量除2,之后你会发现就是个简单的二维背包,有两个限制..... ...
- (第三场) A PACM Team 【dp,五维背包】
链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- dp之二维背包poj1837(天平问题 推荐)
题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长 -15~~15)上,并使得天平平衡的方法数..... ...
- dp之多维背包hdu2159
二维背包问题,我是觉得这个题目数据比较水,虽然它最后说了怪可以无限个,但是它却只能最多杀s个,也就是所有品种的怪最多为s个,那么就是二维完全背包的问题了.......同时,它没有说一定要杀s只怪,所以 ...
- dp之二维背包hdu3496
题意:给你n张电影门票,但一次只可以买m张,并且你最多可以看L分钟,接下来是n场电影,每一场电影a分钟,b价值,要求恰好看m场电影所得到的最大价值,要是看不到m场电影,输出0: 思路:这个题目可以很明 ...
- 二维背包(钟神想要的)(不是DP)
[问题描述] 背包是个好东西,希望我也有.给你一个二维的背包,它的体积是? × ?.现在你有一些大小为1× 2和1×3的物品,每个物品有自己的价值.你希望往背包里面装一些物品,使得它们的价值和最大,问 ...
- dp 二维乃至多维背包
洛谷P1855 榨取kkksc03 分析:套路是很明显的01背包,但是这时受约束的变量有两个了,这种情况下就该用多维背包了 分析方法一样的,用dp[i][j][k]表示从前i个愿望中挑选总时间和总金钱 ...
- hdu4501——小明系列故事——买年货(多维背包)
题解: 思路:将v1,v2,k都当作一种体积,开三维dp数组,每种物品只能取一次 代码中的for循环是倒着进行的,知道01背包和完全背包的肯定明白,倒着进行的就代表每种物品只选择一次 代码: 1 #i ...
- hdu 4501 小明系列故事——买年货_二维背包
题目:你可以有v1元,v2代金券,v3个物品免单,现在有n个商品,商品能用纸币或者代金券购买,当然你可以买v3个商品免费.问怎么最大能买多少价值 题意: 思路二维背包,dp[v1][v2][v3]=M ...
随机推荐
- 基于LumiSoft.Net.dll发、收、删邮件
发邮件: using LumiSoft.Net.SMTP.Client; Mime m = new Mime(); MimeEntity mainEntity = m.MainEntity; // F ...
- highstock使用案例(异步请求,懒加载)
jsp中导入:<script src="<c:url value="/resources/js/highstock.js"></c:url> ...
- @NotEmpty、@NotNull 和 @NotBlank 的区别
1. 三者主要区别如下: @NotEmpty :用于集合类,不能为null,且size>0 @NotNull:不能为null,但可以为empty,没有size的约束 @NotBlank:只用于S ...
- PHP-表达式
最精确的定义一个表达式的方式就是"任何有值的东西" $a = 5; 1 > 2;等
- (原)Ubuntu16中安装nvidia的显卡驱动
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5638185.html part1 直接在“软件和更新-附加驱动”里面设置 安装完ubuntu16后,显 ...
- Linux目录结构及解释(附图)
___/bin (binary二进制) 常用Linux命令 ___/boot 存放着启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件 ___/cdrom 这个目录在你刚刚安装系统的时候 ...
- JSON与Bean互转
转自: 关于json与javaBean之间的转换 废话不多说,直接进入主题,json与javaBean之间的互相转换 javaBean转换成json 直接使用提供的方法可以得到json JSONObj ...
- 【LeetCode】27. Remove Element (2 solutions)
Remove Element Given an array and a value, remove all instances of that value in place and return th ...
- Linux基础之常用命令篇
一.命令的基本格式 [root@localhost~] root为用户名 -表示当前所在位置 localhost主机名 ‘#’超级用户 '$" 普通用户 命令的基本格式: 命令 [选项] [ ...
- Python学习笔记——MySQL的基本操作(2)
1 运算符操作(配合查.修.删操作) 数据库的语法结构 查:select * from 表名 where 字段名 运算符 数字/字符; 改:update 表名 set 字段名=值,... wher ...