1226:装箱问题 (贪心)

news2024/11/14 0:23:25

【题目描述】
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1×1,2×2,3×3,4×4,5×5,6×6。这些产品通常使用一个6×6×h的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。

【输入】
输入包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为1×1至6×6这六种产品的数量。输入将以6个0组成的一行结尾。

【输出】
除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。

【输入样例】

0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0

【输出样例】

2
1

思路分析:
请添加图片描述
根据上图可以知道6x6,5x5,4x4 这些只要有就需要单独的开辟一个包裹进行包装。利用ans来统计一共多少的包裹,首先找到6x6,5x5,4x4这些一共有多少个,就是需要多少的包裹ans+=a[6]+a[5]+a[4]; ,接下来开始计算3x3的长方体,3x3不能塞到以上已经有的情况中(6x6,5x5,4x4), 所以需要再单独统计3x3的情况。根据上图一个包裹最多只可以装进4个33,所以向上取整看看装下所有的3x3的长方体需要多少的包裹ans+=ceil(a[3]/4.0);。上面的情况统计完成之后,开始统计2x2的情况,这是我们发下2x2是可以塞进之前统计的情况的,我们开始计算可以塞进的多少的2x2的长方体记录到num2_2中。判断a[2]的数量是不是能全部塞进去,如果塞不进去需要另外增加新的包裹,一个新的包裹最多可塞下9个2x2,ans+=ceil((a[2]-num2_2)/9.0); 。继续开始统计11的长方体,以上的所有已经增加的包裹看看有多少个空可以塞入1x1的包裹,num1_1来统计可以塞的数量num1_1=36*ans-36*a[6]-25*a[5]-16*a[4]-9*a[3]-4*a[2];,判断a[1]的数量是不是够塞进去,不够塞入则需要增加新的包裹ans+=ceil((a[1]-num1_1)/36.0);。最后的到的ans就是包裹的数量。

#include<bits/stdc++.h>
using namespace std;
int a[7];//统计每一个n*n的长度有多少个
int ans;//统计答案最后有多少个包裹
int num1_1,num2_2;//表示每一种情况有多少的1*1,2*2可以放下
int main(){
	while(1){
		int cnt=0;//统计输入了多少个0,题目最后的输入全部是0
		ans=0;//初始化最终包裹数量
		num1_1=num2_2=0;
		for(int i=1;i<=6;i++){
			cin>>a[i];
			if(!a[i]) cnt++;//计算一共多少输入0
		}
		if(cnt==6) break;//表示输入全部为0,结束输入
		//开始判断,判断6*6,5*5,4*4的长方体有多少个,因为这些必须单独开出一个
		ans+=a[6]+a[5]+a[4];
		//开始判断3*3的情况,3*3也不可以直接拼到前面的情况中
		ans+=ceil(a[3]/4.0);//根据画图我们可以得到3*3的一个包裹最多可装4个所以向上取整,看多少个包裹
		int temp=0;//统计3*3的每一种情况可以放多少2*2
		if(a[3]%4==3) temp=1;
		if(a[3]%4==2) temp=3;
		if(a[3]%4==1) temp=5;
		//开始计算前面的情况下可以塞下的2*2的个数
		//6*6 的个数可以塞 0个 , 5*5 可以塞0个
		//4*4 的个数可以塞 5个 , 3*3 根据个数可以塞 temp个
		num2_2= a[4]*5+temp;//计算出可塞多少的2*2
		if(a[2]>num2_2){//塞进所有的2*2不够塞
		//不够塞需要多加包裹
			ans+=ceil((a[2]-num2_2)/9.0);
		}
		//算出上面所有的情况后可以塞入多少的1*1
		num1_1=36*ans-36*a[6]-25*a[5]-16*a[4]-9*a[3]-4*a[2];
		if(a[1]>num1_1){
			ans+=ceil((a[1]-num1_1)/36.0);
		}
		cout<<ans<<endl;
		
	}	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫工具-BeautifulSoup

BeautifulSoup&#xff1a; 1. 是一个高效的网页解析库&#xff0c;可以从HTML或者XML文件中提取数据 2. 支持不同的解析器&#xff0c;可以对HTML、XML等进行解析 3. 是一个敏感又方便的网页解析库&#xff0c;处理高效&#xff0c;支持多种解析器 4. 利用它在不编写正则表达式…

Unreal 和 Unity 3D 各有什么特点?如何选择?

一、两个引擎简述 Unreal Engine VS Unity Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案&#xff0c;可用于创作、运营和变现任何实时互动的…

【设计模式】软件设计原则

1. 软件设计原则&#xff1a; 为了提高系统软件的可维护性、可复用性、可扩展性和灵活性 1.1 开闭原则&#xff1a; 对扩展开放&#xff0c;对修改关闭 &#xff08;热插拔&#xff09; 实现方式&#xff1a; 通过定义接口和实现类的方式实现开闭原则&#xff0c;我们再进行…

ASEMI代理艾赛斯IXTY02N50D-TRL车规级MOSFET

编辑-Z 艾赛斯车规级MOS管IXTY02N50D-TRL参数&#xff1a; 型号&#xff1a;IXTY02N50D-TRL 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;500V 连续漏电流&#xff08;ID&#xff09;&#xff1a;200mA 功耗&#xff08;PD&#xff09;&#xff1a;25W 工作结温…

如何运营推特营销主账号

在推特上做产品推广&#xff0c;Twitter群&#xff08;发&#xff09;推王建议&#xff1a;一般需要两类账号。 主账号&#xff1a;也就是官方号&#xff0c;用来聚集粉丝&#xff0c;日常产品信息、新闻资讯发布的&#xff1b; 批量推广号&#xff1a;也叫小号或者广告号&am…

oracle数据库定义语言—DDL

文章目录1、数据定义语言2 创建表2.2 oracle 数据库中的表2.2.1 常见的数据字典表2.3 用查询创建表2.3.1 示例3 ALTER TABLE 语句3.1 添加一个新的列3.2 修改数据类型3.3 修改默认值3.4 修改列名3.5 删除一个列4、修改名称5、截断表6 、删除表&#xff08;删除表以及表结构&…

《垃圾回收算法手册 自动内存管理的艺术》——引用计数与垃圾回收器的比较(笔记)

文章目录五、引用计数5.1 引用计数算法的优缺点5.2 提升效率5.3 延迟引用计数5.4 合并引用计数5.5 环状引用计数**步骤**5.6受限域引用计数六、垃圾回收器的比较6.1 吞吐量6.2 停顿时间6.3 内存空间6.4 回收器的实现6.5 自适应系统6.6 统一垃圾回收理论6.6.1 垃圾回收的抽象6.6…

神经网络在故障诊断中的应用

人工神经网络是近年来发展迅速&#xff0c;广泛地应用于各个领域&#xff0c;包括航天&#xff0c;自动控制&#xff0c;金融&#xff0c;电子&#xff0c;制造&#xff0c;医药等多个行业&#xff0c;已经有许多成功的先例&#xff0c;并展示了更为广阔的应用前景。基于神经网…

【区块链 | 智能合约】Ethereum源代码(8)- Ethereum服务和以太坊P2P协议发送广播源码分析

在“【区块链 | 智能合约】Ethereum源代码(2)- go-ethereum 客户端入口代码和Node分析”一文中,我们提到Ethereum作为一个service,被Node 注册进去。Node start的时候会启动其注册的所有服务,Ethereum service也是一样。 一、ethereum service的初始化和启动 func geth(c…

【MySQL数据库笔记 - 进阶篇】(二)索引

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;暂定 &#x1f4dd;视频地址&#xff1a;黑马程序员 MySQL数据库入门到精通 &#x1f4e3;专栏定位&#xff1a;这个专栏我将会整理 B 站黑马程序员的 MySQL…

day064:File类与I/O流、绝对路径与相对路径、File类的成员方法

目录 一、什么是File类、IO流 1.File类 2.I/O流 3.File类的构造方法 二、绝对路径与相对路径 三、File类的成员方法 1.File类的创建功能 &#xff08;1&#xff09;createNewFile() 创建空的文件 &#xff08;2&#xff09;mkdir() 创建单级文…

CY5.5(Cyanine5.5) azide, 10 mM/DMSO,花菁染料Cy5.5标记叠氮

产品名称&#xff1a;花菁染料Cy5.5标记叠氮 英文名称&#xff1a;CY5.5(Cyanine5.5) azide 该染料具有远红外/近红外发射&#xff0c;可用于NIR活体成像。Cyanine5.5可以取代Cy5.5、Alexa Fluor 680和DyLight 680。 CAS:2183440-52-8 分子式:C43H49ClN6O 分子量:701.36 …

简单工厂、工厂方法、抽象工厂、抽象工厂加简单工厂

简单工厂模式&#xff1a;简单工模式时类的创建模式&#xff0c;又叫做静态工厂方法&#xff08;static Factory Method&#xff09;。简单工厂模式是一个工厂对象决定创建出哪一种产品类的实例。它存在的目的很简单&#xff1a;定义一个创建对象的接口。简单工厂模式的最大优点…

Spring Boot之容器功能

目录 一.Spring 注入组件的注解 二.Configuration 1.代码演示 1.1JavaBean--》Monster.java 1.2配置类 1.3执行代码 2.Configuration 注意事项和细节 三.Import 1.创建两个JavaBean类 2.注入类 3.测试注解的使用 四.Conditional 1.Conditional 介绍 2.应用实例 …

攻防世界 看雪看雪看雪

看雪看雪看雪 题目附件里面给了张图 尝试文件拆解 无果 尝试放入winhex查找信息 无果 尝试放入stegsolve查找信息 无果 题目说雪 刚好有一种snow隐写的方法 但好像跟图片没有什么关系 后来发现存在ntfs流隐写 你解压之后也可以看到 这里我们使用7zip打开附件的压缩包…

【长难句分析精讲】同位语从句

分析技巧 形式&#xff1a; 抽象名词 that / whether形式&#xff1a; 具体名词 同位语&#xff08;名词短语&#xff09;如&#xff1a;成都&#xff0c;四川省会 练习一 一划二从三主 这里 and 不是关键词 苹果掉到地上而不是掉到树上这个事实&#xff0c;回答了他一直都…

【Jmeter基础篇】05:Linux服务器上部署并运行Jmeter脚本

配置之前请务必已安装JDK并配置好JDK的环境变量。 1. 上传压缩包到Linux服务器 使用FTP即可&#xff08;最好是新建一个/usr/Application/Jmeter的文件夹&#xff0c;放进去。也可以使用自己喜欢的路径&#xff09; # -p的作用是防止当上层文件夹不存在时报错。想体验的话可以…

Flink的六种物理分区策略

文章目录物理分区&#xff08;Physical Partitioning&#xff09;&#x1f355;1.随机分区&#xff08;shuffle&#xff09;&#x1f354;2.轮询分区&#xff08;Round-Robin&#xff09;&#x1f35f;3. 重缩放分区&#xff08;rescale&#xff09;&#x1f32d;4.广播&#x…

深度学习入门(三十八)计算性能——多GPU训练

深度学习入门&#xff08;三十八&#xff09;计算性能——多GPU训练前言计算性能——多GPU训练课件多GPU并行数据并行VS模型并行数据并行总结教材1 问题拆分2 数据并行性3 简单网络4 数据同步5 数据分发6 训练7 小结多GPU的简洁实现1简单网络2 网络初始化3 训练4 小结前言 核心…

因子特征工程:alphalens库深度解析

原创文章第107篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 前面的文章我们把数据&#xff0c;因子定制&#xff0c;自动标注的功能都准备好了&#xff0c;今天继续因子分析&#xff0c;分析的框架当然还是alphalens。 星球有一期研报…