题解:P12192 [NOISG 2025 Prelim] Train Or Bus

· · 题解

最近刚好学了贪心,那就切一下吧

#include<bits/stdc++.h>
using namespace std;
int main() {
    // 读取城市数量 n
    itn n;
    cin >> n;
    // 定义两个数组 a 和 b,分别存储火车和公交的耗时
    vector<int> a(n), b(n);
    // 读取火车耗时 a[0..n-1]
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }
    // 读取公交耗时 b[0..n-1]
    for (int i = 0; i < n; ++i) {
        cin >> b[i];
    }
    // 计算总最短时间
    int total_time = 0;
    for (int i = 0; i < n; ++i) {
        // 对每一段路,选择耗时更短的交通工具
        total_time += min(a[i], b[i]);
    }
    // 输出结果
    cout << total_time << endl;
    return 0;
}

代码解释

AC记录

‌输入处理‌:

读取 n ,然后读取 na[i]nb[i] 。 ‌计算最短时间‌:

遍历每一段路i,选择 a[i]b[i] 中的较小值,累加到total_time。

‌输出结果‌:

直接输出total_time。

复杂度分析

‌时间复杂度‌:

#### ‌空间复杂度‌: $O(n)$ ,用于存储 $a$ 和 $b$ 数组。 这道题的关键在于‌每一步选择**更快**的交通工具‌,由于选择是**独立的**,所以可以直接用 $贪心算法$ 解决。 $动态规划$ 虽然也可以,但在这里显得多余。 **此身第一篇题解!!!望管理员通过** ###### ~~有个小小错误,那就用来防抄袭吧~~