题解 | #视野争夺#

视野争夺

http://www.nowcoder.com/practice/61e1e66e39f348cdb6495de91ac36a41

  1. 这是一个线段性质的问题。注意如何从左边到右边,依次处理了基本的三个线段关系,以及i达到最后一个的时候怎么判断是否能覆盖。(很重要)
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    long L;
    long xi,yi;
    cin>>n>>L;

    vector<pair<int,int>> v;

    for(int i =0; i< n;i++){
        cin>>xi>>yi;
        v.push_back({xi,yi});
    }


    sort(v.begin(),v.end(),[](pair<long,long> a, pair<long,long> b){
        if(a.first==b.first){
            return a.second>b.second;
        }else{
            return a.first<b.first;
        }
    });

    int pre = 0, last = 0, i =0, ans = 0;

    while(i<v.size()){

        while(i<v.size()&&v[i].first<=pre){//处理堆叠情况以及下一次的连续链接情况
            last = max(last,v[i].second);//前面是处理最后一条
            i++;
        }
        pre = last;//进行下一步是否有缺口判断
        ans++;
        if(i<v.size()&&v[i].first>pre){
            ans==-1;
            break;
        }
        if(last>=L){
            break;//剪枝,只处理下面的
        }


    }

    if(ans==-1||last<L){//前面如果执行完last还不够的话,证明还是不行
        cout<<-1<<endl;
    }else{
        cout<<ans<<endl;
    }




    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
你们的毕业论文什么进度了
点赞 评论 收藏
分享
06-20 21:22
已编辑
门头沟学院 Java
纯真的河老师在喝茶:答应了就跑啊,实习随便跑啊,别被pua了,md就是找个廉价劳动力,还平稳过度正式工,到时候跟你说没转正
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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