• 洛谷 P1803 凌乱的yyy Label:Water 贪心


    题目背景

    快noip了,yyy很紧张!

    题目描述

    现在各大oj上有n个比赛,每个比赛的开始、结束的时间点是知道的。

    yyy认为,参加越多的比赛,noip就能考的越好(假的)

    所以,他想知道他最多能参加几个比赛。

    由于yyy是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参加2个及以上的比赛。

    输入输出格式

    输入格式:

    第一行是一个整数n ,接下来n行每行是2个正整数ai,bi(ai<bi),表示比赛开始、结束的时间。

    输出格式:

    一个整数最多参加的比赛数目。

    输入输出样例

    输入样例#1:
    3
    0 2
    2 4
    1 3
    
    输出样例#1:
    2
    

    说明

    对于20%的数据,n≤10;

    对于50%的数据,n≤1000;

    对于70%的数据,n≤100000;

    对于100%的数据,n≤1000000,0≤ai<bi≤1000000。

    代码

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #define MAXN 2000005
    using namespace std;
    struct cc{
        int bg,ed;
    }nod[MAXN];
    bool cmp(cc a,cc b){
        if(a.ed==b.ed) return a.bg<b.bg;
        else return a.ed<b.ed;
    }
    
    int N,p=1,lst_time,ans;
    
    int main(){
    //    freopen("01.in","r",stdin);
        
        scanf("%d",&N);
        for(int i=1;i<=N;i++){scanf("%d%d",&nod[i].bg,&nod[i].ed);}
        
        sort(nod+1,nod+N+1,cmp);
        
        for(int i=0;i<=1000005&&p<=N;i++){
            while( p<=N && ( nod[p].ed<i || lst_time>nod[p].bg ) ) ++p;
    //        cout<<nod[p].bg<<" "<<nod[p].ed<<endl;
            
            if(nod[p].ed==i&&p<=N&&lst_time<=nod[p].bg){
                lst_time=i;
                ++ans;
                ++p;
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    

      

    选取最早结束的即可

    Line 26 p<=N没写RE了sad>_<

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    ubuntu 安装(install) pwntcha[一个做"验证码识别"的开源程序]
    MySQL 二进制日志过滤
    MySQL 分区表各个分区的行数
    MySQL 表分区A
    MySQL show binglog event in 'log_name'
    MySQL、You are using safe update mode
    SQL 设计心得、逗号分隔列表
    MYSQL @、@@、@x
    SQL Server
    建设供内网访问的网站
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/6048145.html
Copyright © 2020-2023  润新知