zoukankan      html  css  js  c++  java
  • 华华听月月唱歌(贪心)

    链接:https://ac.nowcoder.com/acm/contest/392/A
    来源:牛客网

    月月唱歌超级好听的说!华华听说月月在某个网站发布了自己唱的歌曲,于是把完整的歌曲下载到了U盘里。然而华华不小心把U盘摔了一下,里面的文件摔碎了。月月的歌曲可以看成由1到N的正整数依次排列构成的序列,它现在变成了若干个区间,这些区间可能互相重叠。华华想把它修复为完整的歌曲,也就是找到若干个片段,使他们的并集包含1到N(注意,本题中我们只关注整数,见样例1)。但是华华很懒,所以他想选择最少的区间。请你算出华华最少选择多少个区间。因为华华的U盘受损严重,所以有可能做不到,如果做不到请输出-1。

    输入描述:

    第一行两个正整数N、M,表示歌曲的原长和片段的个数。
    接下来M行,每行两个正整数L、R表示第i的片段对应的区间是[L,R]。

    输出描述:

    如果可以做到,输出最少需要的片段的数量,否则输出-1。
    示例1

    输入

    复制
    4 2
    1 2
    3 4

    输出

    复制
    2
    示例2

    输入

    复制
    4 2
    1 1
    3 4

    输出

    复制
    -1
    示例3

    输入

    复制
    10 5
    1 1
    2 5
    3 6
    4 9
    8 10

    输出

    复制
    4

    备注:

    1≤L≤R≤1e9,1≤N≤1e9,1≤M≤1e5
    题目大意:就是说给你一些区间,问最少需要多少个区间能把[1,n]这个区间覆盖
    贪心思路:就是按照左端点拍个序,然后不断跟新右端点
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include<algorithm>
    using namespace std;
    int n,m;
    const int maxn=1e5+100; 
    struct node{
        int l,r;
    }q[maxn];
    bool cmp(node x,node y){
        return x.l<y.l;
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=m;i++){
            cin>>q[i].l>>q[i].r;
        }
        sort(q+1,q+m+1,cmp);
        if(q[1].l!=1){
            cout<<-1<<endl;
            return 0;
        }
        int last=0,maxr=0,dis=0,ans=0;
        for(int i=1;i<=m;){
            while(q[i].l<=dis+1&&i<=m){
                maxr=max(maxr,q[i].r);
                i++;
            }
            if(maxr>dis){
                ans++;
                dis=maxr;
            }
            else{
                ans=-1;
                break;
            }
            if(maxr>=n){
                break;
            }
        }
        cout<<ans<<endl;
    }
    
    
    


  • 相关阅读:
    华为实习日记——第二十三天
    华为实习日记——第二十二天
    华为实习日记——第二十一天
    华为实习日记——第二十天
    HDU 5102 The K-th Distance(模拟)
    HDU 4113 Construct the Great Wall(插头dp)
    UVALive 4849 String Phone(2-sat、01染色)
    HDU 4859 海岸线(最大流最小割)
    HDU 3879 Base Station(最大权闭合子图)
    POJ 3155 Hard Life(最大密度子图)
  • 原文地址:https://www.cnblogs.com/lipu123/p/14337222.html
Copyright © 2011-2022 走看看