1 条题解

  • 0
    @ 2025-8-24 21:16:14

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Maxmilite
    **

    搬运于2025-08-24 21:16:13,当前版本为作者最后更新于2024-04-24 09:08:03,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Source & Knowledge

    2024 年 4 月语言月赛,由洛谷网校入门计划/基础计划提供。

    题目大意

    nn 只苹果,每只苹果有一个营养值 a1,a2,,ana_1, a_2, \cdots, a_n。需要选择其中营养值最大的一只和最小的一只。计算两只苹果营养值的总和。

    题目分析

    使用擂台法。建立两个变量 mx,mimx, mi,分别代表当前取到的最大值和最小值。之后使用 for 循环读入,每次读入一个 xx,就将其与 mx,mimx, mi 分别比较并替换。

    int mx = -2000000000, mi = 2000000000; // 最大值擂台初始时要很小,反之亦然
    
    for (int i = 1; i <= n; ++i) {
      int x;
      cin >> x;
      if (x > mx) mx = x;
      if (x < mi) mi = x;
    }
    

    最终输出 mx+mimx + mi 即可。但是需要注意的是,最坏情况下,mx+mimx + mi 可以达到 4×1094 \times 10^9,会导致 int 溢出。一种很简单的解决方式是,将 mx,mimx, mi 改为 long long 类型。

    long long mx = -2000000000, mi = 2000000000;
    
    for (int i = 1; i <= n; ++i) {
      ...
    }
    
    cout << mx + mi << endl;
    

    视频讲解

    • 1

    信息

    ID
    9944
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者