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

【在数轴上找最优位置,使移动距离最短】

L1-4 破碎的心,无法挽回的距离

题目描述:

YFffffff 最近在感情上遭受了失败,他的心也破碎成了n块碎片,散落在了数轴上的 n 个位置。

你是一个情感修复师,作为 YFffffff 的好友,你试图将这些破碎的心重新聚集到一个位置,希望能将他们拼凑完整。

然而,移动一颗破碎的心会消耗巨大的情感能量,移动距离的平方就是消耗的能量值(即从位置i移动到位置x,消耗能量为(x−i)2)。

每颗破碎的心代表了 YFffffff 一段零碎的回忆,而将它们聚集到一起的过程,象征着试图修复那些无法挽回的感情。

你的任务是找到一个最佳的目标位置整数 x ,使得将所有破碎的心移动到 x 位置所消耗的总情感能量最少。

然而,即使你完成了任务,这些心是否真的能重新完整,仍然是一个未知数……

输入格式:

一个整数n(1≤n≤100),表示破碎的心的数量。
一个长度为n的数组a,其中a[i](1≤a[i]≤100)表示第i颗破碎的心的位置。

输出格式:

一个整数,表示将所有破碎的心移动到同一位置所消耗的最小总情感能量。

输入样例1

2
1 4

输出样例1

5

输入样例2

7
14 14 2 13 56 2 37

输出样例2

2354

方法一:因为数据范围不大,故可以遍历每个位置求最小耗能

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main()
{
    int n,mi=1e9;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    for(int i=a[0];i<=a[n-1];i++)
    {
        int sum=0;
        for(int j=0;j<n;j++)
        {
            sum+=(a[j]-i)*(a[j]-i);
        }
        mi=min(sum,mi);
    }
    cout<<mi;
    return 0;
    
}

法二:通过数学方法计算出最优位置是n个位置的平均值,如果求平均值时除不尽,就再算平均值+1的位置的结果,取min。

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main()
{
    int n,sum=0,res1=0,res2=0,k=1;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
            sum+=a[i];
    }
    int x,y;
    x=sum/n;
    y=sum%n;
        for(int i=1;i<=n;i++)
        {
            res1+=(a[i]-x)*(a[i]-x);
        }
    if(y!=0)
    {
        x=x+1;
        for(int i=1;i<=n;i++)
        {
            res2+=(a[i]-x)*(a[i]-x);
        }
        res1=min(res1,res2);
    }
    cout<<res1;
    return 0;
    
}


http://www.kler.cn/a/591793.html

相关文章:

  • 在NET6项目中报错,未能在命名空间System.Data.SqlClient中找到类型名SqlCommand,解决办法
  • Linux系统移植篇(十一)Linux 内核启动流程
  • 33、class
  • [本周五题]Javascript面试常考题手撕场景UR缓存、new关键字、大数相加、最长递增子序列、高并发请求、大文件上传和WebWorks
  • 基于FPGA的3U机箱模拟量高速采样板ADI板卡,应用于轨道交通/电力储能等
  • 精准git动图拆解​
  • React第三十章(css原子化)
  • Android 15 获取网络切片信息的标准接口
  • vue3+elementPlus使用vuedraggable实现照片墙拖拽调整位置
  • 【设计模式】3W 学习法全面解析 7 大结构型模式:Java 实战 + 开源框架应用
  • 合React宝宝体质的自定义防抖hook
  • 安全地自动重新启动 Windows 资源管理器Bat脚本
  • css3有哪些新属性
  • 计算机网络-综合布线系统
  • trae和Spring Boot Java 项目 ruoyi框架
  • STM32---FreeRTOS软件定时器
  • 关于非线性优化小记
  • 半导体制造行业的现状 内检LIMS系统在半导体制造的应用
  • Spring Cloud 中的服务注册与发现: Eureka详解
  • mybatis集合映射association与collection