Unaccepted 100 求条
查看原帖
Unaccepted 100 求条
1041871
wyl123ly楼主2023/9/28 21:14
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;

struct time_fl {
    int st,end;
};

vector<time_fl> ina;
time_fl na_done[MAXN];
int lnum_na[MAXN];
int sum_na[MAXN];

vector<time_fl> abr;
time_fl ab_done[MAXN];
int lnum_ab[MAXN];
int sum_ab[MAXN];

bool cmp(const time_fl &l, const time_fl &r){
    return l.st < r.st;
}
bool cmp2(const int &l,const int &r){
    return l > r;
}
int n;
int fl_ina,fl_abr;
int main(){
    scanf("%d%d%d", &n, &fl_ina, &fl_abr);
    for(int i = 1;i <= fl_ina;i++){
        int st,end;
        scanf("%d%d", &st, &end);
        ina.push_back({st,end});
    }
    sort(ina.begin(),ina.end(),cmp);
    for(int i = 1;i <= fl_abr;i++){
        int st,end;
        scanf("%d%d", &st, &end);
        abr.push_back({st,end});
    }
    sort(abr.begin(),abr.end(),cmp);
    int length = -1;

    for(time_fl g : ina){
        int cnt = 0;
        for(time_fl t : na_done){
            if(g.st > t.end){
                break;
            }
            cnt++;
        }
        length = max(length,cnt);
        lnum_na[cnt]++;
        na_done[cnt].st = g.st;
        na_done[cnt].end = g.end;
    }
    for(int i = 1;i <= length + 1;i++){
        sum_na[i] = sum_na[i - 1] + lnum_na[i - 1];
    }
    int len_na = length;
    length = -1;

    for(time_fl g : abr){
        int cnt = 0;
        for(time_fl t : ab_done){
            if(g.st > t.end){
                break;
            }
            cnt++;
        }
        length = max(length,cnt);
        lnum_ab[cnt]++;
        ab_done[cnt].st = g.st;
        ab_done[cnt].end = g.end;
    }
    for(int i = 1;i <= length + 1;i++){
        sum_ab[i] = sum_ab[i - 1] + lnum_ab[i - 1];
    }
    
    int ans = -1;
    for(int i = 0;i <= n ;i++){
        int af = n - i;
        if(af > length + 1){
            af = length + 1;
        }
        ans = max(ans,sum_na[i] + sum_ab[af]);
    }
 
    printf("%d", ans);
    return 0;
}

链接: 我的测评记录

2023/9/28 21:14
加载中...