UVa 1523 Helicopter
题目描述给定888个整数表示888位乘客的重量。直升机有888个座位分布在螺旋桨中心的周围每个座位的横向坐标和纵向坐标分别为−1-1−1、000或111且不包含(0,0)(0,0)(0,0)。规定左侧乘客产生正横向力矩右侧产生负横向力矩前方乘客产生正纵向力矩后方产生负纵向力矩。第iii个座位的横向力矩Mviwi⋅xiMv_i w_i \cdot x_iMvi​wi​⋅xi​纵向力矩Mhiwi⋅yiMh_i w_i \cdot y_iMhi​wi​⋅yi​其中(xi,yi)(x_i, y_i)(xi​,yi​)为座位的坐标wiw_iwi​为该座位乘客的重量。合力矩定义为M(∑i18Mvi)2(∑i18Mhi)2 M \sqrt{\left(\sum_{i1}^{8} Mv_i\right)^2 \left(\sum_{i1}^{8} Mh_i\right)^2}M(i1∑8​Mvi​)2(i1∑8​Mhi​)2​任务是将888个重量分配到888个座位上使得MMM最小。输入格式输入包含多个测试用例。每个测试用例为一行包含888个整数表示888位乘客的重量。输入以888个整数全为000的测试用例结束该用例不处理。输出格式对于每个测试用例输出一行包含一个实数表示最优安排下的合力矩MMM。结果保留333位小数。输出中不得包含多余空格或空行。样例输入1 2 3 4 5 6 7 8 0 0 0 0 0 0 0输出0.000题目分析本题的核心是给定888个重量值将它们一一映射到固定的888个坐标上使由重量和坐标共同决定的合力矩MMM最小。由于座位坐标固定每个乘客的力矩贡献只取决于其重量和所在座位的坐标。总横向力矩Sv∑wixiS_v \sum w_i x_iSv​∑wi​xi​总纵向力矩Sh∑wiyiS_h \sum w_i y_iSh​∑wi​yi​目标是最小化Sv2Sh2\sqrt{S_v^2 S_h^2}Sv2​Sh2​​。因为只有888个座位所有可能的分配方案数为8!403208! 403208!40320这个数量非常小完全可以通过暴力枚举所有排列来求解。每个测试用例只需枚举所有排列计算对应的SvS_vSv​和ShS_hSh​并更新最小值即可。本题没有隐藏的复杂性质直接枚举即可通过。时间复杂度和空间复杂度均很低。解题思路坐标定义将888个座位的坐标预先存储在数组中例如按顺序为(−1,−1)(-1,-1)(−1,−1)、(−1,0)(-1,0)(−1,0)、(−1,1)(-1,1)(−1,1)、(0,−1)(0,-1)(0,−1)、(0,1)(0,1)(0,1)、(1,−1)(1,-1)(1,−1)、(1,0)(1,0)(1,0)、(1,1)(1,1)(1,1)。这些坐标的横向值xxx和纵向值yyy分别表示座位相对螺旋桨的横向和纵向距离。枚举排列对每个测试用例读取888个重量后将重量数组排序便于使用std::next_permutation然后使用do-while循环遍历所有排列。对于每个排列将重量依次与预定义的坐标相乘累加得到SvS_vSv​和ShS_hSh​计算MSv2Sh2M \sqrt{S_v^2 S_h^2}MSv2​Sh2​​并与当前最优值比较保留较小者。精度处理由于坐标和重量均为整数SvS_vSv​和ShS_hSh​为整数MMM为浮点数。使用double类型存储输出时使用fixed和setprecision(3)保留三位小数。输入终止读取888个整数后检查是否全为000若是则结束循环。代码实现// Helicopter// UVa ID: 1523// Verdict: Accepted// Submission Date: 2026-06-20// UVa Run Time: 0.370s//// 版权所有C2026邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;// 计算给定重量排列下的合力矩doublecalcMoment(constvectorintweights,constvectorpairint,intseats){intsumV0,sumH0;for(inti0;i8;i){sumVweights[i]*seats[i].first;sumHweights[i]*seats[i].second;}returnsqrt((double)sumV*sumV(double)sumH*sumH);}intmain(){// 8个座位的坐标相对于螺旋桨中心vectorpairint,intseats{{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};vectorintweights(8);while(true){boolallZerotrue;for(inti0;i8;i){cinweights[i];if(weights[i]!0)allZerofalse;}if(allZero)break;// 结束标记sort(weights.begin(),weights.end());doublebest1e100;do{doublecurcalcMoment(weights,seats);if(curbest)bestcur;}while(next_permutation(weights.begin(),weights.end()));coutfixedsetprecision(3)bestendl;}return0;}总结本题是一个典型的全排列枚举问题数据规模极小8!403208! 403208!40320直接枚举即可。关键点在于正确理解力矩的计算方式并将每个座位的坐标与乘客重量对应。实际编程中使用std::next_permutation可以方便地遍历所有排列注意先对重量排序以确保遍历所有不同排列。时间复杂度为O(T⋅8!⋅8)O(T \cdot 8! \cdot 8)O(T⋅8!⋅8)其中TTT为测试用例数完全满足题目要求。此类问题提醒我们在数据范围较小时暴力枚举往往是最简单且高效的解决方法。

相关新闻

CSDN原力榜185:AI原生系统8层全拆

CSDN原力榜185:AI原生系统8层全拆

多数人看到"AI 写的文章冲上 CSDN 原力榜 185 名",第一反应是:是不是用了什么神级提示词? 不是。 我用的模型很普通,提示词也不神秘。真正让我从月排名 693 一路爬到 185 的,是把"写文章"这件事当…

2026/8/26 19:23:16 阅读更多 →
Claude写前端组件提示词从普通版到进阶版怎么写

Claude写前端组件提示词从普通版到进阶版怎么写

配备AI智能聊天功能, 拥有问答助手特性, 具备AI智能搜索能力, 借助多模态理解力助力, 帮你轻松跨越以0为起始点抵达1的创作门槛。你要去促使产生那契合真实项目规范的前端组件代码, 并非单单只是那种能够运行得通的玩具示例。常理下的提示词通常会致使输出出现缺少props定义的情…

2026/8/26 19:23:16 阅读更多 →
Spatix点云数据处理实操案例对比

Spatix点云数据处理实操案例对比

通用参数DEM参数等高线参数生成的等高线对比图断面对比图

2026/8/26 19:23:16 阅读更多 →

最新新闻

可寻址RGB LED实战:从驱动原理到Python图像显示与视频映射

可寻址RGB LED实战:从驱动原理到Python图像显示与视频映射

可寻址RGB LED(Addressable RGB LED)这几年在创客圈、智能家居、舞台装置里几乎是绕不开的器件。你给灯条通电,随便DIY一个氛围灯,那只能叫普通RGB;真正让它变得好玩的,是每一颗灯珠都能独立控制颜色和亮度…

2026/8/26 20:38:59 阅读更多 →
软件测试高频面试题解析与实战技巧

软件测试高频面试题解析与实战技巧

1. 高频软件测试面试题解析与实战指南最近帮团队面试了几位测试工程师候选人,发现不少人对基础概念的理解停留在表面。整理了一份高频面试题清单,附上深度解析和实际工作中的应对策略,希望能帮到准备跳槽或求职的同行们。2. 测试理论基础核心…

2026/8/26 20:38:59 阅读更多 →
MATLAB字符串处理:从char到string的进阶指南与实战技巧

MATLAB字符串处理:从char到string的进阶指南与实战技巧

1. 项目概述:为什么MATLAB字符串值得你花时间? 如果你用过MATLAB,不管是做数据分析、图像处理还是控制系统仿真,几乎都绕不开“字符串”这个数据类型。乍一看,它不就是用来存文本的吗?有什么好讲的&#xf…

2026/8/26 20:38:59 阅读更多 →
STM32学习 TIM输入捕获

STM32学习 TIM输入捕获

IC(input capture) 输入捕获简介部分对于同一个定时器,输入捕获与输出比较只能使用其中一种功能,因为这两条通道共用同一个 CCR 寄存器,且通道引脚也是共用的。在 IC 模式下,当通道输入引脚出现指定电平跳变…

2026/8/26 20:38:59 阅读更多 →
C++ std::move与std::move_backward算法:高效数据搬迁与移动语义实战

C++ std::move与std::move_backward算法:高效数据搬迁与移动语义实战

1. 项目概述:理解“搬移元素”在C泛型算法中的核心地位 在C的日常开发中,尤其是处理容器数据时,“搬移”操作远比我们想象中更频繁和关键。你可能写过这样的代码:想把一个 std::vector 中间的一部分数据挪到另一个位置&#xff…

2026/8/26 20:38:59 阅读更多 →
Logback日志脱敏实战:从原理到实现,构建安全防线

Logback日志脱敏实战:从原理到实现,构建安全防线

1. 项目概述:为什么日志脱敏是开发者的必修课?最近在排查一个线上问题时,我翻看了几行应用日志,瞬间惊出一身冷汗。日志里明晃晃地记录着用户的手机号、身份证号,甚至还有一段未经处理的银行卡交易报文。这可不是危言耸…

2026/8/26 20:37:59 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →