当前位置: 首页 > news >正文

UVa 410 Station Balance

题目描述

题目要求将SSS个标本分配到CCC个离心机室中,每个室最多可以容纳000111222个标本。分配的目标是最小化不平衡度IMBALANCE\textit{IMBALANCE}IMBALANCE,其定义为:

IMBALANCE=∑i=1C∣CMi−AM∣ \textit{IMBALANCE} = \sum_{i = 1}^{C} |\textit{CM}_i - \textit{AM}|IMBALANCE=i=1CCMiAM

其中:

  • CMi\textit{CM}_iCMi是第iii个室的总质量,即分配到该室的标本质量之和。
  • AM\textit{AM}AM是所有室的平均质量,即所有标本总质量除以室数CCC

输入格式

输入包含多组数据。每组数据格式如下:

  • 第一行包含两个整数CCCSSS1≤C≤51 \le C \le 51C51≤S≤2C1 \le S \le 2C1S2C),分别表示室数和标本数。
  • 第二行包含SSS个整数,表示每个标本的质量(111100010001000之间),由空格分隔。

输出格式

对于每组数据,首先输出一行Set #X,其中XXX111开始递增。接下来输出CCC行,每行格式为:室号(第111列)、冒号(第222列)、然后从第444列开始输出该室分配的标本质量,质量之间用恰好一个空格分隔。如果某室没有分配标本,则只输出室号和冒号,不输出质量。最后输出一行IMBALANCE = X,其中XXX为计算出的不平衡度,保留555位小数。每组输出后跟一个空行。

样例

输入

2 3 6 3 8 3 5 51 19 27 14 33 5 9 1 2 3 5 7 11 13 17 19

输出

Set #1 0: 6 3 1: 8 IMBALANCE = 1.00000 Set #2 0: 51 1: 19 27 2: 14 33 IMBALANCE = 6.00000 Set #3 0: 1 17 1: 2 13 2: 3 11 3: 5 7 4: 19 IMBALANCE = 11.60000

题目分析

本题的核心是将SSS个标本分配到CCC个室中,每个室最多222个标本,使得各室总质量与平均质量之差的绝对值之和最小。

问题转化

由于每个室最多放222个标本,且S≤2CS \le 2CS2C,因此有些室可能只放111个标本或空置。为了简化处理,可以引入质量为000的虚拟标本,使得标本总数恰好为2C2C2C。这样每个室恰好分配到222个标本(允许质量为000),问题转化为将2C2C2C个标本(包含虚拟的000)两两配对,使得各对质量和与平均质量之差的绝对值之和最小。

最优配对策略

已知一个经典结论:对于此类两两配对使各对和尽量接近的问题,最优策略是将标本质量排序后,将最小的与最大的配对,次小的与次大的配对,依此类推。这是因为这种配对方式能够平衡各对的和,使它们尽可能接近。

具体步骤如下:

  1. 将所有标本质量(包括补充的000)按升序排序。
  2. 将第iii小的与第iii大的配对(即masses[i]\textit{masses}[i]masses[i]masses[2C−1−i]\textit{masses}[2C - 1 - i]masses[2C1i]配对),iii000C−1C-1C1
  3. 计算每个配对的和,然后计算与平均质量AMAMAM的差的绝对值,累加得到IMBALANCE\textit{IMBALANCE}IMBALANCE

平均质量的计算

平均质量AMAMAM定义为所有标本总质量除以室数CCC。注意虚拟标本的质量000不计入总质量,因此总质量即为原始标本质量之和。

输出格式

每个室输出时,需要按升序输出该室的两个标本质量(小的在前,大的在后)。由于配对时masses[i]≤masses[2C−1−i]\textit{masses}[i] \le \textit{masses}[2C - 1 - i]masses[i]masses[2C1i],因此可以直接先输出masses[i]\textit{masses}[i]masses[i],再输出masses[2C−1−i]\textit{masses}[2C - 1 - i]masses[2C1i]。注意质量为000的虚拟标本不应输出。

边界情况

  • 如果S<2CS < 2CS<2C,则需要补充2C−S2C - S2CS000
  • 如果某室的两个标本质量均为000,则该室不输出任何质量(只输出室号和冒号)。
  • 不平衡度需要保留555位小数。

复杂度分析

每组数据排序复杂度O(2Clog⁡(2C))O(2C \log(2C))O(2Clog(2C))C≤5C \le 5C5,可忽略。总复杂度O(T×Clog⁡C)O(T \times C \log C)O(T×ClogC)

代码实现

// Station Balance// UVa ID: 410// Verdict: Accepted// Submission Date: 2016-07-24// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net//// http://www.algorithmist.com/index.php/UVa_410#include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intchambers,specimens,mass,cases=0;while(cin>>chambers>>specimens){inttotal_masses=0;vector<int>masses;for(inti=1;i<=specimens;i++){cin>>mass;masses.push_back(mass);total_masses+=mass;}while(masses.size()<2*chambers)masses.push_back(0);sort(masses.begin(),masses.end());intaverage_masses=0;cout<<"Set #"<<++cases<<'\n';for(inti=0;i<chambers;i++){cout<<' '<<i<<':';inta=masses[i],b=masses[2*chambers-1-i];if(a>0||b>0){if(a>0)cout<<' '<<a;if(b>0)cout<<' '<<b;}cout<<'\n';average_masses+=abs((a+b)*chambers-total_masses);}cout<<"IMBALANCE = ";cout<<fixed<<setprecision(5)<<(double)average_masses/(double)chambers;cout<<"\n\n";}return0;}
http://www.jsqmd.com/news/969479/

相关文章:

  • CSDN AI数字营销套餐升级全解析(附官方未公开的灰度通道与优先级加急路径)
  • 3分钟掌握sg3_utils:你的存储设备管理神器
  • 颠覆性网络拓扑可视化:easy-topo如何重塑网络架构设计范式
  • 如何用AKShare快速获取金融数据?新手必看的完整指南
  • UVa 411 Centipede Collisions
  • 从‘今天天气如何’到MCMC采样:齐次马尔可夫链在贝叶斯统计中的前世今生
  • AI生成营销文冲击百度首页失败率高达68.3%(2024Q2百度搜索研究院白皮书实证)
  • ExifToolGui照片元数据管理工具:从混乱到有序的终极指南
  • 5分钟实现AI到PSD的无损转换,告别手动分层烦恼
  • Node-RED仪表板终极指南:15分钟构建专业数据可视化界面
  • 3分钟搞定Windows和Office激活:KMS智能激活脚本终极指南
  • Silk v3解码器架构解析与音频格式转换最佳实践
  • LitCAD:用C重写CAD规则的开源革命
  • 如何快速掌握激光雕刻:LaserGRBL免费控制软件完整指南
  • 告别臃肿压缩软件:NanaZip如何让Windows文件管理更优雅高效
  • 告别激活烦恼:Windows与Office智能激活方案深度解析
  • Python开发者入局大模型,从熟练到拿offer还缺哪几课
  • 3D打印切片软件开发:从代码到物理世界的桥梁如何构建?
  • Steam游戏保护机制解除:如何实现免平台启动的技术探索
  • Warcraft Helper终极指南:让魔兽争霸3在现代Windows上完美运行的完整方案
  • AI 辅助 UI 生成与设计系统自动化的实践路径
  • 10分钟彻底解决Windows和Office激活难题的智能方案
  • 3个实战场景:如何用WrenAI解决企业数据查询的真实痛点
  • Verilog generate语句详解:从基础语法到高级应用与避坑指南
  • 如何快速掌握Grasscutter Tools:面向原神私服玩家的完整指南
  • OpenCV C++ filter2D三合一图像处理工程:含锐化、高斯模糊、边缘检测完整VS2019项目
  • 深度解析:UvSquares如何通过智能算法重塑Blender UV网格
  • UVa 412 Pi
  • SAP ALV单元格修改后自动联动更新?一个CL_ALV_CHANGED_DATA_PROTOCOL的实战教程
  • 推荐系统为何忽略维京长船?文化实体的数字激活方法论