HDU3127 完全背包 枚举所有小矩形

算法:背包问题总结(网上资料) 作者比较完整地介绍了背包问题。感谢作者,所有内容归原作者所有。 立即下载

这题可以可以看做完全背包问题来接。因为:1、每种矩形布可以剪任意多个;2、题目给出的矩形布可以看做背包容量;3、每个矩形布都有一个价值

关键在于找到状态转移方程:设dp[i][j]为长为i宽为j的矩形布的最大价值,下面的图一可以看做待剪的布,图二为小布的尺寸

对于这个问题可以两种如下剪布方案:

 

易知剪布后的价值为每个图形中三块之和。

所以,对于方法一可得dp[i][j]=max(dp[i][j],max((dp[i-x][j]+dp[x][j-y]),(dp[i][j-y]+dp[i-][y]))+value)。

对于方法二可得dp[i][j]=max(dp[i][j],max((dp[i-y][j]+dp[y][j-x]),(dp[i][j-x]+dp[i-y][x]))+value)。

其中,value为小布的价值。

 

AC代码:

#include<iostream>
using namespace std;

struct node
{
	int x,y,value;
}p[10];

int dp[1005][1005];

int max(int a,int b)
{
	return a>=b?a:b;
}

int main()
{
	int n,x,y,t_case,i,j,k;

	cin>>t_case;
	while(t_case--)
	{
		cin>>n>>x>>y;

		for(i=0;i<n;i++)
		{
			cin>>p[i].x>>p[i].y>>p[i].value;
		}

		memset(dp,0,sizeof(dp));
		for(i=0;i<=x;i++)
		{
			for(j=0;j<=y;j++)
			{
				for(k=0;k<n;k++)
				{
					if(i>=p[k].x && j>=p[k].y)
						dp[i][j]=max(dp[i][j],max((dp[i-p[k].x][j]+dp[p[k].x][j-p[k].y]),(dp[i][j-p[k].y]+dp[i-p[k].x][p[k].y]))+p[k].value);
					if(i>=p[k].y && j>=p[k].x)
						dp[i][j]=max(dp[i][j],max((dp[i-p[k].y][j]+dp[p[k].y][j-p[k].x]),(dp[i][j-p[k].x]+dp[i-p[k].y][p[k].x]))+p[k].value);
				}
			}
		}
		cout<<dp[x][y]<<endl;

	}
	return 0;
}


 

 

 

背包问题 数学建模 背包问题 数学建模 背包问题 数学建模 背包问题: 01背包问题 02: 完全背包问题 03: 多重背包问题 04: 混合三种背包问题 05: 二维费用的背包问题 06: 分组的背包问题 07: 有依赖的背包问题 08: 泛化物品 09: 背包问题问法的变化 11: 背包问题的搜索解法 立即下载

相关推荐

ACM---背包问题大全!不用说一定不会让你失望!非常经典!非常详细!

背包问题!不用说一定不会让你失望!非常经典!非常详细!

常用算法——动态规划算法(背包问题)

动态规划算法介绍 动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法 动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解) 动态规划可以通过填表的方式来逐步推进,得到最优解. 动态规划算法最佳实践-

笔记别偷看 1284

使用kmplot在线进行生存分析

欢迎关注”生信修炼手册”!kmplot是一个生存分析的在线工具,最初是设计用来对肝癌中的miRNA进行生存分析,对应的文章发表在scientific reports上,链接如下https...

庐州月光的博客 1万+

最大乘积问题+0-1背包问题+矩形分割算法

最大乘积问题+0-1背包问题+矩形分割算法 最大乘积问题 问题描述: ​ 设n是一个正整数,现在要求将n分解为若干个互不相同的自然数的和,并且使这些自然数的乘积最大,对于给定的正整数n,计算最优分解方案。 ​ 提示: 把一个正整数从中间分开(如果是偶数直接除以2如果是奇数,分别加1除以2,减1除以2) 其中一部分保留在A[]数组中(奇数的话,比较大的那一部分保留给A[]数组),另一部分赋给temp,并重复1,2 步骤 最后把temp赋给A[]数组 C语言:贪心算法 #include <stdi

wxy 1527

【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

【内附代码】【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

m0_74268508的博客 1654

【微信小程序开发与设计】垃圾智能分类小程序

垃圾分类是将来生活可持续发展的必需项。但是很多人由于缺乏垃圾分类知识,或是因为垃圾分类困难,费时费力,所以没有好好贯彻垃圾分类政策,此时设计一款方便于群众进行智能化垃圾识别分类的微信小程序就显得尤为必要。

Markelle_Fultz的博客 8246

HDU-3127-WHUgirls(完全背包)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3127 WHUgirls Problem Description There are many pretty girls in Wuhan University, and as we know, every girl loves pretty clothes, so do they

Mongo_girl 432

Mplus—随机截距交叉滞后模型(RI-CLPM)语法

随机截距交叉滞后模型RI-CLPM的Mplus语法。

m0_54401011的博客 2535

hdu oj 3127 WHUgirls(2009 Asia Wuhan Regional Contest Online)

WHUgirls Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2068    Accepted Submission(s): 785 Problem Description There are many p

Just do it ! 2672

Nvidia AGX Xavier刷机指北

因为工作的关系,要在AGX上安装CUDA。nvidia官网上没找到适合AGX版本的CUDA,只能走刷机的路子。刷机过程中,也遇到一些坑,做个记录。 需要有一台ubuntu系统的电脑作为主机Host。我的主机系统为Ubuntu18.04 整个刷机过程为: 在Host上安装sdkmanager,整个刷机过程主要通过sdkmanager来操作。 在Host自动下载一些系统组件,各种deb包 Host上制作OS系统镜像,烧录到AGX中 Host上之前下载好的deb包,安装到AGX中。 完结,撒花 ...

sinat_38685124的博客 6296

P4VASP的安装 & 使用P4VASP画DOS(态密度)图

P4vasp 下载: 链接:https://pan.baidu.com/s/1JIptQVSFSopQls9CiSIoVA 提取码:sbhi 由于是免安装版本,直接右击解压即可,将出现以下文件: 双击既可运行P4vasp: 关于P4vasp的基本使用(使用P4vasp画DOS) 这里以vasp计算为例 首先导出DOS计算的文件夹中的vasprun.xml文件 从p4vasp导入该文件进行作图(直接将vasprun.xml拖入p4vasp一般不会有反应) 具体步骤: 点击open: 在弹出的弹窗

qq_42168543的博客 5万+

【HDU 3127】 完全背包

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3127 题目大意:一个大矩形,要你分割成小矩形(只能水平和竖直切割),每个小矩形都有一个价值,问如何分割能得到最大总价值。 解题思路: 完全背包思想,枚举所有可能情况。 对于枚举每个小矩形都可以横放竖放两种情况。 对于每种情况都有两种切割方式:横向切割或者竖向切割。 ...

baidui8622的博客 156

python轮胎缺陷检测_基于深度学习的轮胎缺陷无损检测与分类技术研究

基于深度学习的轮胎缺陷无损检测与分类技术研究【摘要】:随着汽车行业快速发展及汽车保有量的持续增长,大大增加了对轮胎的需求,而轮胎质量在很大程度上决定了轮胎的使用寿命,也是在行驶过程中对人们生命财产安全的保障,同时对轮胎进行在线质量检测也便于轮胎生产企业及时发现生产线中存在的不合格产品,以此来调整机械设备甚至轮胎的生产工艺,避免造成生产材料的浪费。因此,检测轮胎质量是轮胎生产过程中必不可缺少的一部分...

weixin_39689428的博客 1428

HDU-3127 完全背包

链接:点击打开链接有一个很大的矩形,给你一些小矩形及其价值,要求能获得的最大价值。dp【x】【y】表示x,y的矩形能得到的最大价值。首先矩形可以正着放有两种方法,要求 i&gt;y&amp;&amp;j&gt;xz+max ( dp[i][j-y]+dp[i-x][y],dp[x][j-y]+dp[i-x][j] )取两者的最大值加上这个小矩形的价值。也可以竖着放两种方法。由于懒得想dp的下标,所...

安得广厦千万间的博客 257

基于Matlab使用雷达资源管理有效跟踪多个机动目标仿真(附源码)

多功能雷达可以搜索目标,确认新轨道,并重新访问轨道以更新状态。为了执行这些功能,多功能雷达通常由资源管理器管理,该资源管理器创建用于搜索、确认和跟踪的雷达任务。这些任务是根据优先级和时间安排的,因此,在每个时间步长中,多功能雷达都可以将其波束指向所需的方向。在此示例中,对于用于跟踪机动目标的雷达,有两个相互冲突的要求:目标的数量及其初始位置通常事先不知道。因此,雷达必须不断搜索感兴趣的区域才能找到目标。此外,雷达需要在进入雷达覆盖区域后立即检测并建立对每个目标的跟踪。目标机动的时间段事先是未知的。

珞瑜的博客 3150

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【二维费用之完全背包】HDU3127-WHUgirls

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3127 Problem Description There are many pretty girls in Wuhan University, and as we know, every girl loves pretty clothes, so do they. One day some of t

wlxsq的专栏 508

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

hdu 3127 WHUgirls (完全背包)

题意:给定一个矩形,将矩形切成给定任意个数的小矩形,当然每一个小矩形都有对应的权值,求最大权值 分析:其实,就是一个类似完全背包的问题 dp[i][j]表示从(0,0)到(i,j)对应的矩形可以切出小矩形的最大权值和 View Code #include<iostream> #include<algorithm> #include<string&gt...

weixin_30652271的博客 104

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu-3127-WHUgirls解题报告

 hdu-3127 题目点我 WHUgirls Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2260    Accepted Submission(s): 856 Problem Description

qq_27295525的专栏 362

hdu 3127 WHUgirls【dp】好题~

WHUgirls Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2796    Accepted Submission(s): 1046 Problem Description There are many pret

mengxiang000000 462

题目分类

最短路径 2544 1874 2066

phoenix13suns的专栏 962

贪心入门案例(二)------部分背包问题

???? 部分背包问题 ????????问题描述: 有n个物品 ,但物品不仅仅只有重量w ,还有价值V,背包的重量上限还是c , 要使放进背包的物品的重量不超过c的情况下价值总和最大。 ...

Hi~周星星的博客 503

背包问题总结

主要运用动态规划的思想解决,以下提供比较精简的代码,简洁易懂。 一、01背包 1.一维01背包 #include<iostream> #define max(a, b) a > b ? a : b int main() { int v = 8; //最大体积 int num = 4; //物品数目 int vol[4] = { 2, 3, 4, 5 }, val...

Ben 399

经典01背包问题 + 状态回溯选择

经典01背包问题 + 状态回溯选择 用迭代方式解决01背包问题 除了返回背包能装入的最大价值外,可以再用一个二维数组记录每次选择的状态,用这一思路来跟踪每一步所做的选择,并从中回溯出一条最佳路线来。 不带选择模式的信息 只能获得背包能装入的最大价值 N, W = 4,4 wt = [4,3,1,1] val = [3000, 2000, 1500, 2000 ] # import sys # nwStr = sys.stdin.readline().strip() # N, W = list(map(int

轻宇的博客 547

HDU1006

这题是我在HDU上第二次遇到的关于钟表的问题,都很坑人!         首先,我想大家都会在理解上出问题。其实吧,我觉得这题HDU的思想有问题,钟表是一秒一秒走的,哪有连续时间,表示不解!但题目要求,木有办法了。其次呢,结果要求保留三位有效数字。这也就直接导致了:如果离散的来记录满足条件的时间的话,会在精度上出错!         现在,来分析下我对这题的做法吧。 题目要求一天(24小时)

ON THE WAY TO GEEK 7419
上一篇: HDU2639 01背包 第K优决策
下一篇: HDU3732 "假的01背包"
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值