题解 | #视野争夺#

视野争夺

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;
}
大厂笔试题题解 文章被收录于专栏

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
每晚夜里独自颤抖:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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