8 条题解

  • 0
    @ 2025-7-29 19:18:17

    #include #include #include using namespace std;

    int main() { ios::sync_with_stdio(false); cin.tie(0);

    int N, M;
    cin >> N >> M;
    
    vector<int> P(M);
    for (int i = 0; i < M; i++) {
        cin >> P[i];
    }
    
    vector<int> A(N - 1), B(N - 1), C(N - 1);
    for (int i = 0; i < N - 1; i++) {
        cin >> A[i] >> B[i] >> C[i];
    }
    
    // 统计每段铁路被经过的次数
    vector<int> count(N - 1, 0);
    for (int i = 1; i < M; i++) {
        int start = min(P[i - 1], P[i]) - 1;
        int end = max(P[i - 1], P[i]) - 1;
        for (int j = start; j < end; j++) {
            count[j]++;
        }
    }
    
    long long total = 0;
    for (int i = 0; i < N - 1; i++) {
        long long ticket_cost = (long long)count[i] * A[i];
        long long ic_cost = C[i] + (long long)count[i] * B[i];
        total += min(ticket_cost, ic_cost);
    }
    
    cout << total << endl;
    
    return 0;
    

    }

    信息

    ID
    2627
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    292
    已通过
    81
    上传者