探测器到管道口路程总和计算的代码实现
以下是补全后的代码,用于计算所有探测器落地后走到管道口的过程中所走过的路程总和: ```cpp #include <iostream> #include <algorithm> using namespace std; int n, m, a[100005], k, l, r, mid, ans, sum; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i]; } // 对管道口的距离进行排序 sort(a + 1, a + n + 1); for (int i = 1; i <= m; i++) { cin >> k; // 输入探测器落地时到起点的距离 l = 1; r = n; ans = 0; // 二分查找探测器左右两边的管道口 while (l <= r) { mid = (l + r) / 2; if (a[mid] <= k) { ans = mid; l = mid + 1; } else { r = mid - 1; } } // 计算探测器到左右两边管道口的距离 int dist1 = abs(k - a[ans]); int dist2 = abs(k - a[ans + 1]); // 取距离的最小值累加到总路程中 sum += min(dist1, dist2); } cout << sum; return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取管道口的个数 `n` 和探测器的个数 `m`,接着读取每个管道口到起点的距离并存储在数组 `a` 中,然后对数组 `a` 进行排序。 2. **探测器处理**:对于每个探测器,读取其落地时到起点的距离 `k`,使用二分查找找到其左边最近的管道口位置 `ans`。 3. **计算距离**:计算探测器到左边管道口和右边管道口的距离 `dist1` 和 `dist2`,取两者中的最小值累加到总路程 `sum` 中。 4. **输出结果**:输出所有探测器走过的路程总和 `sum`。 ######[AI问答 | 540点数解答 | 2026-08-09 21:50:39]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)558
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)474
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)606
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)478
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)181
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)158
- 解决代码WA问题:修改整数溢出问题后的计算代码(字节豆包 | 749点数解答 | 2026-05-10 16:20:03)92
- 修正代码解决计算 f(l, r) 和出现的 WA 问题(字节豆包 | 806点数解答 | 2026-05-10 16:21:37)87
- iOS开发:手把手教你完整实现代理模式,含声明与实现步骤!(阿里通义 | 268点数解答 | 2023-11-08 00:39:55)353
- JavaScript 开发:用 Animation 实现自定义动画的简易教程 (阿里通义 | 333点数解答 | 2023-11-09 01:50:07)325
- Vue.js 与 Matter.js 碰撞:轻松实现物理模拟全攻略 (讯飞星火 | 522点数解答 | 2024-05-29 22:26:06)510
- JS实现移动端网页快捷键创建方式及注意事项(阿里通义 | 284点数解答 | 2024-06-05 19:02:59)325