同 P1696,又是一道简单的暴力水题。

第一层循环枚举被解雇的奶牛的编号,第二层循环枚举除了被解雇的奶牛,其他奶牛的工作时间,第三重循环从从工作时间的左端点枚举到右端点,打个标记,再把所有打上了标记的时间点的个数都统计一下,答案就是统计出的结果里面的最大值。

详见代码:

#include<iostream>
using namespace std;

int n, ans = -1e7;
struct node{
    int x, y;
}a[105];
bool vis[10005];

int main(){
    cin >> n;
    for (int i = 1; i <= n; i++){
        cin >> a[i].x >> a[i].y;
    }
    for (int i = 1; i <= n; i++){
        int cnt = 0;
        for (int j = 0; j <= 1000; j++) vis[j] = 0;
        for (int j = 1; j <= n; j++){
            if (j == i) continue;
            for (int k = a[j].x; k < a[j].y; k++){
                vis[k] = 1;
            }
        }
        for (int j = 0; j <= 1000; j++) if (vis[j]) cnt++;
        ans = max(ans, cnt);
    }
    cout << ans;
    return 0;
}

01-26 22:11