题解 | 小sun的假期

小sun的假期

https://www.nowcoder.com/practice/e502f7c4ca9e455ab252d2451f5dacb2

n<1e9,采用区间合并

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;
    cin>>n>>m;
    if(m==0){
        cout<<n<<endl;
        return 0;
    }
    vector<pair<int,int>>a;
    for(int i=0;i<m;i++){
        int l,r;
        cin>>l>>r;
        a.push_back({l,r});
    }
    sort(a.begin(),a.end());
    vector<pair<int,int>>merged;
    int start=a[0].first,end=a[0].second;
    for(int i=1;i<m;i++){
        if(a[i].first<=end+1)end=max(end,a[i].second);
        else{
            merged.push_back({start,end});
            start=a[i].first;
            end=a[i].second;
        }
    }
    merged.push_back({start,end});
    int max_cnt=0,last_end=0;
    if(merged[0].first>1)max_cnt=max(max_cnt,merged[0].first-1);
    last_end=merged[0].second;
    for(int i=1;i<merged.size();i++){
        int start=last_end+1;
        int end=merged[i].first-1;
        if(start<=end){
            max_cnt=max(max_cnt,end-start+1);
        }
        last_end=max(last_end,merged[i].second);
    }
    if(last_end<n)max_cnt=max(max_cnt,n-last_end);
    cout<<max_cnt<<endl;
    return 0;
}

全部评论

相关推荐

想干测开的tomca...:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声: ### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0 你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
10-29 15:51
嘉应学院 Java
后端转测开第一人:你把简历的学历改成北京交通大学 去海投1000份发现基本还是没面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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