zoukankan      html  css  js  c++  java
  • 【贪心】闭区间问题

    问题 X: 【贪心】闭区间问题

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 15  解决: 9
    [提交][状态][讨论版]

    题目描述

    通过魔法钟回来的张琪曼和魔法学院的其他学员一起研究营救李旭琳脱离“时空陷”的方法。他们建立了n个对历史时间线的监控点,每个监控点可监控历史上的一个时间段,我们可以简单地看做是 x 轴上 n 个闭区间。但有些监控点监控的时间段是重叠的,这会干扰监控的准确性。请尝试去掉尽可能少的闭区间,使剩下的闭区间都不相交。

    输入

    第一行为闭区间的个数n(1≤n≤40000),随后n行为闭区间的2个端点。

    输出

    输出去掉尽可能少的闭区间的个数。

    样例输入

    3
    10 20
    15 10
    20 15
    

    样例输出

    2
    思路:由于是闭区间,比上一题增加不相交就可以。
    代码:
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    
    struct node{
        int begin;
        int end;
    };
    node tt[105];
    
    int cmp(node a,node b){
        return a.end<b.end||a.end==b.end&&a.begin<b.begin;
    }
    
    int main()
    {
        int n;
        int t;
        int s=0;
        int k;//记录上一个计入的节目。
        //while(scanf("%d",&n)!=EOF&&n){
            scanf("%d",&n);
            for(int i=0;i<n;i++){
                scanf("%d %d",&tt[i].begin,&tt[i].end);
                if(tt[i].begin>tt[i].end){
                    t=tt[i].begin;
                    tt[i].begin=tt[i].end;
                    tt[i].end=t;
                }
            }
            sort(tt,tt+n,cmp);
            s+=1;
            k=0;
            for(int i=1;i<n;i++){
                if(tt[i].begin>tt[k].end){
                    s++;
                    k=i;
                }
            }
            printf("%d
    ",n-s);
            s=0;
        //}
    
        return 0;
    }
     
  • 相关阅读:
    JDK Base64编解码1.7和1.8的坑
    nacos部署注意点
    详解CurrentHashMap之预习篇
    SpringBoot爬坑系列
    开发之缓存与数据库优化
    jreble备注
    Unable to open debugger port (127.0.0.1:55119): java.net.SocketException "Socket closed"
    ConcurrentHashMap源码分析
    为什么要先高16位异或低16位再取模运算
    HashMap(三)之源码分析
  • 原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5686625.html
Copyright © 2011-2022 走看看