news 2026/4/23 18:55:21

UVa 121 Pipe Fitters

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 121 Pipe Fitters

题目描述

一家公司生产统一直径的管道,这些管道需要存储在矩形容器中。容器有不同尺寸,管道在容器内按行排列,同一行内管道紧贴(相切),行与行之间也紧贴(或紧贴容器底部)。
有两种排列方式:网格(grid\texttt{grid}grid交错(skew\texttt{skew}skew,如下图所示(题目中给出示意图):

  • 网格排列:管道按行列对齐排列。
  • 交错排列:管道在行与行之间交错排列,使得相邻行的管道位于间隙中。

输入为一系列矩形容器横截面的尺寸(单位是管道直径),每个尺寸由两个实数表示。输出对于每个横截面,能够容纳的最大管道数,以及达到该最大数时所采用的排列模式(grid\texttt{grid}gridskew\texttt{skew}skew)。如果两种模式结果相同,则输出grid

题目分析与解题思路

1. 网格排列(grid\texttt{grid}grid

在网格排列中,管道整齐地排成行和列。假设容器宽度为widthwidthwidth,高度为heightheightheight,那么能容纳的管道数为:

grid=⌊width⌋×⌊height⌋ grid = \lfloor width \rfloor \times \lfloor height \rfloorgrid=width×height

这里使用向下取整是因为管道是整数个,不能有部分管道。

2. 交错排列(skew\texttt{skew}skew

交错排列较为复杂,需要仔细计算行数和每行的管道数。

行数计算

在交错排列中,相邻两行的垂直距离为32\frac{\sqrt{3}}{2}23(因为管道直径为单位长度,三个管道中心构成等边三角形,高为32\frac{\sqrt{3}}{2}23)。
若第一行紧贴底部,那么第iii行的垂直位置为(i−1)×32(i-1) \times \frac{\sqrt{3}}{2}(i1)×23
要求最后一行不能超出容器高度,即(layers−1)×32+1≤height(layers - 1) \times \frac{\sqrt{3}}{2} + 1 \le height(layers1)×23+1height
解得最多行数:

layers=⌊2(height−1)3⌋+1 layers = \left\lfloor \frac{2(height - 1)}{\sqrt{3}} \right\rfloor + 1layers=32(height1)+1

注意若height<1height < 1height<1,则无法放置任何管道。

每行管道数
  • 奇数行(从第一行开始计数)管道数为⌊width⌋\lfloor width \rfloorwidth
  • 偶数行管道数通常为⌊width⌋−1\lfloor width \rfloor - 1width1,但若width−⌊width⌋≥0.5width - \lfloor width \rfloor \ge 0.5widthwidth0.5,则偶数行也可以放下与奇数行相同数量的管道。这是因为交错排列中偶数行管道会向左偏移0.50.50.5个单位,若剩余空间足够,则可多放一个。
总管道数

设奇数行有oddRows=⌈layers/2⌉oddRows = \lceil layers / 2 \rceiloddRows=layers/2,偶数行有evenRows=⌊layers/2⌋evenRows = \lfloor layers / 2 \rfloorevenRows=layers/2,则总数为:

skew=oddRows×pipesPerOddRow+evenRows×pipesPerEvenRow skew = oddRows \times pipesPerOddRow + evenRows \times pipesPerEvenRowskew=oddRows×pipesPerOddRow+evenRows×pipesPerEvenRow

注意

由于容器可以旋转,因此需要计算skew(width,height)skew(width, height)skew(width,height)skew(height,width)skew(height, width)skew(height,width)并取最大值。

3. 比较与输出

比较网格排列和交错排列的最大管道数,输出较大者及其模式;若相等则输出grid

代码实现

// Pipe Fitters// UVa ID: 121// Verdict: Accepted// Submission Date: 2011-12-18// UVa Run Time: 0.056s//// 版权所有(C)2011,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intgrid(doublewidth,doubleheight){intnGrid=0;nGrid=floor(width)*floor(height);returnnGrid;}intskew(doublewidth,doubleheight){if(height<1.0)return0;intlayers=floor(2.0*(height-1.0)/sqrt(3.0)+1.0);intpipes_per_odd_full_row=floor(width);intpipes_per_even_full_row=pipes_per_odd_full_row-1;if((width-pipes_per_odd_full_row)>=0.5)pipes_per_even_full_row=pipes_per_odd_full_row;intnSkew=ceil(layers/2.0)*pipes_per_odd_full_row+floor(layers/2.0)*pipes_per_even_full_row;returnnSkew;}intmain(intac,char*av[]){doublea,b;while(cin>>a>>b){intnGrid=grid(a,b);intnSkew=max(skew(a,b),skew(b,a));if(nGrid>=nSkew)cout<<nGrid<<" grid"<<endl;elsecout<<nSkew<<" skew"<<endl;}return0;}

复杂度分析

对于每个输入尺寸,计算grid\texttt{grid}gridskew\texttt{skew}skew均为常数时间操作,因此总时间复杂度为O(1)O(1)O(1)每个测试用例,整体为O(n)O(n)O(n),其中nnn为测试用例数。空间复杂度为O(1)O(1)O(1)

总结

本题主要考察几何建模和取整运算。关键在于理解交错排列的行距与每行管道数的计算,并正确处理浮点数比较与取整。通过分别计算两种排列方式的管道数并比较,即可得到答案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 15:31:27

微信工具箱终极指南:5分钟实现微信自动化操作

微信工具箱终极指南&#xff1a;5分钟实现微信自动化操作 【免费下载链接】wechat-toolbox WeChat toolbox&#xff08;微信工具箱&#xff09; 项目地址: https://gitcode.com/gh_mirrors/we/wechat-toolbox 想要摆脱繁琐的微信操作&#xff0c;实现消息自动回复、批量…

作者头像 李华
网站建设 2026/4/23 13:58:00

如何快速掌握SEUThesis:东南大学论文排版的完整指南

如何快速掌握SEUThesis&#xff1a;东南大学论文排版的完整指南 【免费下载链接】SEUThesis 项目地址: https://gitcode.com/gh_mirrors/seu/SEUThesis 每到毕业季&#xff0c;东南大学的学生们都会面临一个共同的挑战&#xff1a;论文格式排版。从页眉页脚设置到参考文…

作者头像 李华
网站建设 2026/4/23 6:42:06

基于Java+SSM+Flask个人课表管理(源码+LW+调试文档+讲解等)/个人课表/课表管理/课程安排/学习计划/时间管理/课程表/学习进度/课程管理/学习规划/教学安排

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/4/23 15:37:21

MGeo与Snowflake云数仓连接:双向同步地址主数据

MGeo与Snowflake云数仓连接&#xff1a;双向同步地址主数据 在现代企业级数据架构中&#xff0c;主数据管理&#xff08;MDM&#xff09; 尤其是地址类主数据的统一与对齐&#xff0c;已成为跨系统集成、客户画像构建和供应链优化的关键基础。然而&#xff0c;中文地址具有高度…

作者头像 李华
网站建设 2026/4/23 14:29:51

神经网络十年演进(2015–2025)

神经网络十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年神经网络还是“ResNet卷积手工特征ImageNet分类巅峰”的CNN时代&#xff0c;2025年已进化成“万亿级多模态VLA统一神经网络端到端意图直出量子鲁棒自进化全域动态社交智能”的通用AI时代&…

作者头像 李华
网站建设 2026/4/23 8:21:33

Mac计时器终极使用指南:简单高效的时间管理方案

Mac计时器终极使用指南&#xff1a;简单高效的时间管理方案 【免费下载链接】timer-app A simple Timer app for Mac 项目地址: https://gitcode.com/gh_mirrors/ti/timer-app 你是否经常在忙碌的工作中忘记时间&#xff1f;或者在学习时难以保持专注&#xff1f;这些问…

作者头像 李华