poj1017----模拟
题目大意:
现有1*1,2*2,3*3,4*4,5*5,6*6规格的产品若干个(高度都为h),问最少需要多少个
6*6*h的箱子把这些产品都装完
输入:每组测试数据共6个整数,分别代表1*1,...6*6这些产品的数量
思路:
细心模拟就好
具体代码如:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | /* 6*6的产品独占一个箱子 5*5产品需要一个箱子来装,剩下的空间只能用1*1的填充,且最多11个 4*4产品需要一个箱子来装,剩下的空间可用5个2*2的填满,不足再用1*1的填 4个3*3产品需要一个箱子来装,不足的用1*1,2*2填 */ #include<iostream> #include<cstdio> using namespace std; int a,b,c,d,e,f; int main() { freopen ( "in.txt" , "r" ,stdin); while ( scanf ( "%d%d%d%d%d%d" ,&a,&b,&c,&d,&e,&f)!=EOF) { int sum = 0; if ((a+b+c+d+e+f)==0) break ; sum=f+e+d; //4*4,5*5,6*6肯定都得要一个箱子才能装 //c=1,2,3,4时都要一个箱子 sum+=(c+3)/4; //3*3每四个装满一个箱子,不足四个也需要一个箱子,剩下的空间用1*1,2*2的填充 //把1*1的箱子放到装5*5的箱子,计算出剩余的数量 a = max(0,a-11*e); //把2*2的箱子放到装4*4的箱子,计算出剩余的数量 b = b-d*5; if (b<0) //说明4*4的箱子装完2*2的产品后还有余 { //2*2的产品相当于4个1*1的 a = a+4*b; } else //2*2的产品还有余,填充到放3*3箱子 { //根据3*3的数量,计算出剩余空间可放多少个1*1和2*2的产品 if (c%4==1) { a = a-7; b=b-5; } else if (c%4==2) { a = a-6; b = b-3; } else if (c%4==3) { b = b -1; a=a-5; } if (b>0) //b还是大于0,另外加箱子放2*2的 { int counts = (b+8)/9; sum+=counts; int num = 36 - (b%9)*4; a = a-num; } else a = a+b*4; } if (a>0) sum=sum+(a+35)/36; printf ( "%d\n" ,sum); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构