题解:CF401B Sereja and Contests

· · 题解

  1. 最多的场数就是 1n−1 的编号中没有记录的场次数。

  2. 最少的场数就是每连续两场未记录的场次记成一个 div1 和一个 div2

所以,模拟即可。

AC Code

#include <bits/stdc++.h>
using namespace std;
bool b[40005];
int main() {
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= k; i++) {
        int y;
        cin >> y;
        int o, p;
        if (y == 2)cin >> o, b[o] = true;
        else cin >> o >> p, b[o] = b[p] = true;
    }
    int ans = 0;
    for (int i = 1; i < n; i++) {
        if (b[i] == false) {
            ans++;
        }
    }
    int sum = ans;
    for (int i = 1; i < n; i++) {
        if (b[i] == false && b[i + 1] == false && i + 1 < n) {
            sum--;
            i++;
        }
    }
    cout << sum << ' ' << ans << endl;
    return 0;
}