跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

GESP C++ 七级真题解析:金币收集

综述由AI生成针对 GESP C++ 七级金币收集问题,在数轴上分布的金币收集策略。通过排序与贪心算法,计算出收集所有金币的最小移动距离,并提供了完整的 C++ 参考实现。核心逻辑在于比较先向左后向右与先向右后向左两种路径的距离差。

HadoopMan发布于 2026/2/6更新于 2026/6/225 浏览
GESP C++ 七级真题解析:金币收集

题目描述

小 A 正在游玩收集金币的游戏。具体来说,在数轴上将会出现 n 枚金币,其中第 i 枚金币位于坐标 x_i 处。你需要从原点出发,收集所有的金币,求所需的最小移动距离。

输入格式

第一行包含一个整数 n,表示金币的数量。 第二行包含 n 个整数,表示每枚金币的坐标 x_i。

输出格式

输出一个整数,表示收集所有金币所需的最小移动距离。

数据范围

对于 100% 的数据,1 <= n <= 10^5,-10^9 <= x_i <= 10^9。

解题思路

这是一个典型的贪心算法问题。由于金币分布在数轴上,我们需要考虑正半轴和负半轴的金币。

  1. 排序:首先将所有金币的坐标进行排序。
  2. 分类:将金币分为负数坐标(左侧)和正数坐标(右侧)。
  3. 策略:
    • 如果只有一侧有金币,直接走到最远端即可。
    • 如果两侧都有金币,有两种最优路径:
      • 先向左走到最左边的金币,再向右走到最右边的金币。
      • 先向右走到最右边的金币,再向左走到最左边的金币。
    • 最小距离为上述两种方案中的较小值。

具体公式为:min(2 * |left_min| + right_max, 2 * right_max + |left_min|),其中 left_min 是最小的负坐标,right_max 是最大的正坐标。

参考代码

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int main() {
    int n;
    if (!(cin >> n)) return 0;

    vector<int> coins(n);
    for (int i = 0; i < n; ++i) {
        cin >> coins[i];
    }

    sort(coins.begin(), coins.end());

    
     left_pos = coins[];
     right_pos = coins[n - ];

      dist = ;

     (left_pos >= ) {
        
        dist = right_pos;
    }   (right_pos <= ) {
        
        dist = (left_pos);
    }  {
        
          option1 =  * (left_pos) + right_pos;
          option2 =  * right_pos + (left_pos);
        dist = (option1, option2);
    }

    cout << dist << endl;

     ;
}
// 找到最左和最右的金币
int
0
int
1
long
long
0
if
0
// 全在右侧或原点
else
if
0
// 全在左侧或原点
abs
else
// 跨越原点
long
long
2LL
abs
long
long
2LL
abs
min
return
0

总结

本题考察了数轴上的贪心策略与基础排序应用。关键在于识别出只需关注最左和最右两个端点,通过比较往返路径来确定最优解。

目录

  1. 题目描述
  2. 输入格式
  3. 输出格式
  4. 数据范围
  5. 解题思路
  6. 参考代码
  7. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 飞算 JavaAI:Java 遗留系统重构与工程化生成实战
  • Seedance 2.0 多模态 AI 视频生成工具使用指南
  • .NET Core 自定义 dotnet new 微服务模板实战
  • 【AI大模型学习日志7:深度拆解阿里通义千问Qwen——产业级AI基建与全球开源生态的双轮驱动者】
  • 二叉树 DFS 递归解题套路
  • Spring Boot RESTful API 开发、测试与安全认证实战
  • Java Lambda 和匿名内部类为何不能修改外部变量?final 机制深度解析
  • 基于 AWS EC2 免费层部署 ClawdBot 自建 AI 助手
  • Java 二分查找算法实战:从基础到进阶
  • Z-Image-Turbo_UI 本地 AI 绘图界面实测与使用心得
  • 常用 AI 降重工具推荐及选择建议
  • 数据结构核心:KMP 算法、Trie 树与并查集详解
  • 从视频孪生到镜像孪生:三维空间控制与风险推演技术解析
  • Spring Bean 作用域、生命周期与自动装配源码解析
  • AI 辅助开发 Python PIP 镜像源自动切换工具
  • Layui 框架下 Unity WebGL Tab 切换黑屏解决方案
  • 按下 F5 后,浏览器前端究竟发生了什么?
  • DeepSeek 使用指南与高阶提示词技巧
  • Python 核心语法详解:变量、流程控制、函数与数据结构
  • 用 Prompt 进行数据清洗:缺失值与异常值自动标注

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online