B3963 [语言月赛 202404] 吃苹果 题解

· · 题解

Source & Knowledge

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

题目大意

## 题目分析 使用擂台法。建立两个变量 $mx, mi$,分别代表当前取到的最大值和最小值。之后使用 `for` 循环读入,每次读入一个 $x$,就将其与 $mx, mi$ 分别比较并替换。 ```cpp 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 + mi$ 即可。但是需要注意的是,最坏情况下,$mx + mi$ 可以达到 $4 \times 10^9$,会导致 `int` 溢出。一种很简单的解决方式是,将 $mx, mi$ 改为 `long long` 类型。 ```cpp long long mx = -2000000000, mi = 2000000000; for (int i = 1; i <= n; ++i) { ... } cout << mx + mi << endl; ``` ## 视频讲解 ![](bilibili:BV1Km411m7zZ?page=4)