CodeStar第八周周赛普及奠基组()

T1:小猴上学

本题难度简单,考察代码熟练度。对于第 \(i\) 站来说,如果第 \(i\) 站有人不能上车,就记录 \(i\) 到数组中,最终如果数组为空说明到达学校的这段时间每一站等待的人都能上车,否则说明有部分站有人不能上车。

用 记录到达第 \(i\) 站还未上下车时车上的人数

num

\(
num = \min(num-a_i+b_i, m)
\)

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    
    int num = 0;
    set<int> st;
    rep(i, n) {
        int a, b;
        cin >> a >> b;
        if (num-a+b > m) st.insert(i);
        num = min(num-a+b, m);
    }
    
    if (!st.size()) {
        puts("Yes");
        cout << num << '\n';
    }
    else {
        puts("No");
        for (int i : st) {
            cout << i+1 << '\n';
        }
    }
    
    return 0;
}
————————

T1:小猴上学

本题难度简单,考察代码熟练度。对于第 \(i\) 站来说,如果第 \(i\) 站有人不能上车,就记录 \(i\) 到数组中,最终如果数组为空说明到达学校的这段时间每一站等待的人都能上车,否则说明有部分站有人不能上车。

用 记录到达第 \(i\) 站还未上下车时车上的人数

num

\(
num = \min(num-a_i+b_i, m)
\)

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    
    int num = 0;
    set<int> st;
    rep(i, n) {
        int a, b;
        cin >> a >> b;
        if (num-a+b > m) st.insert(i);
        num = min(num-a+b, m);
    }
    
    if (!st.size()) {
        puts("Yes");
        cout << num << '\n';
    }
    else {
        puts("No");
        for (int i : st) {
            cout << i+1 << '\n';
        }
    }
    
    return 0;
}