打包装箱 (贪心 c ++)

题目描述

某校开展爱心捐书活动,同学们纷纷踊跃把自己看过的旧书拿出来捐给贫困山区的孩子们,图书室的胥林老师把同学们捐献的书打包在了6种纸箱子里(打包好的各类纸箱子有若干个),纸箱子的高相同,但底面积分为1 * 1,2 * 2,3 * 3,4 * 4,5 * 5,6 * 6。现为了装车方便,需要把这些纸箱子装在若干个6*6的木箱子,木箱子的高和打包纸箱子相同,请你帮助胥老师,用最少的木箱子打包完所有的纸箱子。

输入格式

一行(六个数)用空格隔开

分别表示1 * 1、2 * 2、3 * 3、4 * 4、5 * 5、6 * 6六类纸箱子的个数(每类箱子的个数小于等于100)

输出格式

一行,最少的木箱子个数

样例
样例输入

6 5 4 3 2 1

样例输出

7

思路

按照从大到小的顺序放入盒子

代码
#include <cstdio>
int s1, s2, s3, s4,s5,s6;
long long sum;
int a[10] = {0, 5, 3, 1};
int main() {
	scanf("%d %d %d %d %d %d", &s1, &s2, &s3, &s4, &s5, &s6);
	sum += s6 + s5 + s4 + (s3 + 3) / 4;
	int r2, r1;
	r2 = s4 * 5 + a[s3 % 4];
	if(s2 > r2){
		sum += ((s2 - r2) + 8) / 9;
	}
	r1 = sum * 36 - s6 * 6 * 6 - s5 * 5 * 5 - s4 * 4 * 4 - s3 * 3 * 3 - s2 * 2 * 2;
	if(s1 > r1){
		sum += (s1 - r1 + 35) / 36;
	}
	printf("%lld", sum);
	return 0;
} 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值