题解 | #华华听月月唱歌#

华华听月月唱歌

https://ac.nowcoder.com/acm/problem/23036

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=10e5+5;
struct interval{
    long long  left;
    long long  right;
};
bool cmp(const interval& a, const interval& b) {
    return a.left < b.left;
}
int main(){
    long long n,m;
    cin>>n>>m;
    vector<interval> v(m);
    for(int i=0;i<m;i++){
        cin>>v[i].left>>v[i].right;
    }
    //将v根据left从小到大排序
    sort(v.begin(),v.end(),cmp);
    //贪心策略:
    //每次选择right最大的区间
    int count =0;//区间数量
    long long  place=0;//记录的已经选择的区间的right
    long long max_place=0;//此时的最大right
    bool is_duan=false;//判断是否有任一区间无法连接
    for(int i=0;i<m;i++){
        if(v[i].left<=place+1){
        	if(v[i].right==n){
                place=n;
        		count++;
        		break;
			} 
            max_place= max(max_place,v[i].right);
        }else{
            if(max_place==place){
                is_duan=true;
                break;
            }
            count++;
            place=max_place;
            i--;
        }
    }
    if(!is_duan)cout<<count;
    else cout<<"-1";
    return 0;
}
全部评论

相关推荐

2025-12-22 15:04
江西农业大学 Web前端
SaviorSu:直接说下学期可以请假,一般情况学校允许我26届,大三就直接去实习了
点赞 评论 收藏
分享
2025-11-15 14:35
南京邮电大学 Java
程序员牛肉:你这简历有啥值得拷打的?在牛客你这种简历一抓一大把,也就是个人信息不一样而已。 关键要去找亮点,亮点啊,整个简历都跟流水线生产出来的一样。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务