百练 OJ 1017 POJ1017装箱子

//ID: 百练 OJ 1017 POJ1017装箱子
//题目地址: http://poj.grids.cn/problem/1017
//My Name: Tanky_Woo
//My Website: C++奋斗乐园|C++学习|算法学习|ACM/ICPC学习
//Website Link: http://www.cpply.com/
//My BBS: C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛
//BBS Link:http://www.cppleyuan.com/
//My Blog:www.wutianqi.com
//豆瓣小组:http://www.douban.com/group/cppleyuan/
//QQ:17611904
//QQ群:C++奋斗乐园①群:19333724(满) ②群:23840480 (满)③群:17314377 ④群:23829384
//转载请写上本帖链接 www.cpply.com|www.cppleyuan.com|www.wutianqi.com
//及名称”Tanky Woo与ACM一起走过的日子”和“C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 #include <iostream>
using namespace std;
int a, b, c, d, e, f;
int main()
{
	int nPackets, nLeft;   //nPackets表示供需要多少箱子, nleft表示 3*3的产品在占满每个6*6的箱子后还剩几个没装
	int Three_Packets[4] = {0, 5, 3, 1};  //表示一个6*6的箱子在装满nLeft个3*3产品后剩余可以装多少2*2的产品
	while(scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f) == 6
		&& (!(a==0 && b==0 && c==0 && d==0 && e==0 && f==0)))
	{
		nPackets = 0;
		nLeft = 0;
		nPackets += d + e + f + (c+3)/4;     
		nLeft = c % 4;
		int two_board = 5 * d + Three_Packets[nLeft];    //多余的可以装2*2产品的个数
		int one_board = 0;  //多余的可以装1*1产品的个数
		if(b > two_board)
			nPackets += ((b - two_board)+8)/9;
		one_board = 36*nPackets - 36*f - 25*e - 16*d - 9 *c - 4*b;
		if(a > one_board)
			nPackets += ((a-one_board)+35)/36;
		printf("%d\n", nPackets);
	}
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《百练 OJ 1017 POJ1017装箱子》有282个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注