poj之旅——1017

题目描述:有 1 * 1 到 6 * 6 的产品,最少用几个 6 * 6 的箱子装它们。

题解:贪心策略是先装大的,再装小的,6 * 6 和 5 * 5 以及 4 * 4 肯定独享一个箱子(不可能再放得下同规格的产品)。装了 4 * 4 和 3 * 3 的箱子还可以放 2 * 2 的产品,给几张图,可以看得更清晰:


参考程序:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
int main(){
	int p1,p2,p3,p4,p5,p6;
	int spa[4]={0,5,3,1};
	while ((scanf("%d%d%d%d%d%d",&p1,&p2,&p3,&p4,&p5,&p6)==6) && (p1 || p2 || p3 || p4 || p5 || p6)){
		int ans=p4+p5+p6+(p3+3)/4,free=5*p4+spa[p3 % 4];
		if (p2>free) ans+=(p2-free+8)/9;
		free=36*ans-36*p6-25*p5-16*p4-9*p3-4*p2;
	    if (p1>free) ans+=(p1-free+35)/36;
		printf("%d\n",ans);	
	}
	return 0;
}

//图片转自hankcs的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值