酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

探测器到管道口路程总和计算的代码实现

以下是补全后的代码,用于计算所有探测器落地后走到管道口的过程中所走过的路程总和: ```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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]