zoukankan      html  css  js  c++  java
  • 1236:区间合并

    这也是一本通上的一道分治的题目,简单的对题目分析来说,就是类似于下面这个手绘稿

    (画的丑莫喷)


    就是理解为对区间进行一个合并,最后输出所有合在一起的最后的闭区间的头尾

    如果没有输出No、

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #define itn int
    #define INF 0x3F3F3F3F
    using namespace std;
    struct code{
    	int left;
    	int right;
    }a[100000];
    int cmp(code p,code q){
    	if(p.left==q.left )
            return p.right<q.right;
        else
            return p.left<q.left;
    }
    int main()
    {
        int n;
        int i;
        int max=-INF;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i].left>>a[i].right;
        sort(a+1,a+1+n,cmp);
     
        for(i=1;i<n;i++)
        {
            if(a[i].right>max)
                max=a[i].right;
            if(a[i+1].left>max)
            {
                cout<<"no"<<endl;
                return 0;
            }
        }
        if(a[i].right>max)
            max=a[i].right;
        cout<<a[1].left<<" "<<max;
        return 0;
    }
    

      这个代码没加注释,就简单理解一下,宁们也方便ctrl+c ctrl+v

    我定义了一个结构体,把每个区间当做是一个结构

    每个的头为left 尾为right 把最大值定义为了0x3F3F3F3F,在输入之后,将其按照头的大小进行排序,方便操作,

      

    int cmp(code p,code q){
    	if(p.left==q.left )
            return p.right<q.right;
        else
            return p.left<q.left;
    }
    

      利用这个对于大小方便比较

    然后就是一个简单的循环模拟,最后输出就ok了

  • 相关阅读:
    Python os 方法指南
    网站后台500错误分析
    HTML中的meta标签常用属性及其作用总结
    Python线程理论
    python之struct详解
    python之路——初识面向对象
    configparser和hashlib模块
    logging模块
    re模块
    pickle,shelve,json模块
  • 原文地址:https://www.cnblogs.com/--840-114/p/12957580.html
Copyright © 2011-2022 走看看