全部评论 1

  • #include<bits/stdc++.h>
    using namespace std;
    struct Ques{ // 表示一个问题
    int l,r;
    };
    bool cmp(Ques x,Ques y){
    return x.r < y.r; // 以右节点从小到大排序
    }
    int main(){
    int n,m;
    cin>>n>>m;
    vector<Ques> a(m+1);
    for(auto i=1;i<=m;i++){
    cin>>a[i].l>>a[i].r;
    // 注意题目不保证按顺序输入左右节点
    a[i].l = min(a[i].l,a[i].r);
    a[i].r = max(a[i].l,a[i].r)-1;
    }
    sort(a.begin()+1,a.begin()+1+m,cmp);
    int lastPlace=INT_MIN,ans=0;
    for(auto i=1;i<=m;i++){
    if(lastPlace < a[i].l){ans++;lastPlace = a[i].r;}
    }
    cout<<ans;
    return 0;
    }

    2026-09-12 来自 广东

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页