2020年5月赛 乙组T4打包蛋糕
题目:
小爱蛋糕店只生产正方形的蛋糕,有六种规格,分别是 1×1、2×2、3×3、4×4、5×5、6×6。给定一组自然数 a1,a2,a3,a4,a5,a6分别表示每种蛋糕各有多少数量。
现在,小爱需要将这些蛋糕装入包装盒,每个包装盒的尺寸都是 6×66×6的。规格不同的蛋糕可以拼在一个包装盒里。
比如,七只 1×1的蛋糕,五只 2×2 的蛋糕,及一只 3×3 的蛋糕可以装在一个包装盒里。
请问,最少需要多少只包装盒才能装下所有的蛋糕呢?
输入格式
单独一行:六个自然数 a1,a2,a3,a4,a5,a6表示各种规格的蛋糕数量。
输出格式
单个整数:表示最少需要多少只包装盒。
数据范围
对于 50%的数据,a2=a3=0;
对于 100% 的数据,0≤ai≤100000。
我的思路:
当时脑抽,只想着贪心,却忘了还有合并的状况;
当时就是:
6x6一个箱子
5x5一个箱子
4x4一个箱子
3x3四个配一个箱子
2x2十八个配一个箱子
1x1三十六个配一个箱子
正确解法
同样是贪心,但是却加入了分类:
6 x 6的蛋糕必须使用一个新的盒子,且没有剩余空间
5 x 5的蛋糕必须使用一个新的盒子,剩下的空间只能用1 x 1的蛋糕去填补
4 x 4的蛋糕必须使用一个新的盒子,剩下的空间优先用2 x 2的蛋糕去填补,最多可以拼5个
3 x 3的蛋糕先每4个分成一组,每组使用一个新的盒子:
如果多出一个3x3的蛋糕,再使用一个新的盒子,剩下的空间优先用2 x 2的蛋糕去填补,最多可以拼5个
如果多出两个3x3的蛋糕,再使用一个新的盒子,剩下的空间优先用2 x 2的蛋糕去填补,最多可以拼3个
如果多出三个3x3的蛋糕,再使用一个新的盒子,剩下的空间优先用2 x 2的蛋糕去填补,最多可以拼1个
到这里,我们可能将一些2 x 2的蛋糕拼到大尺寸蛋糕的盒子里了;如果还剩余2 x 2的蛋糕,则每9个分成一组,每组使用一个新的盒子,多出的2 x 2蛋糕,再使用一个新的盒子;
最后剩下的1x1蛋糕36个配一组,便可以完成最后的答案。