• 1236:区间合并


    题目来源:http://ybt.ssoier.cn:8088/problem_show.php?pid=1236

    1236:区间合并


    时间限制: 1000 ms         内存限制: 65536 KB
    提交数: 2640     通过数: 1051 

    【题目描述】

    给定 nn 个闭区间 [ai;biai;bi],其中i=1,2,...,ni=1,2,...,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1;21;2] 和 [2;32;3] 可以合并为 [1;31;3],[1;31;3] 和 [2;42;4] 可以合并为 [1;41;4],但是[1;21;2] 和 [3;43;4] 不可以合并。

    我们的任务是判断这些区间是否可以最终合并为一个闭区间,如果可以,将这个闭区间输出,否则输出nono。

    【输入】

    第一行为一个整数nn,3n500003≤n≤50000。表示输入区间的数量。

    之后nn行,在第ii行上(1in1≤i≤n),为两个整数 aiai 和 bibi ,整数之间用一个空格分隔,表示区间 [ai;biai;bi](其中 1aibi100001≤ai≤bi≤10000)。

    【输出】

    输出一行,如果这些区间最终可以合并为一个闭区间,输出这个闭区间的左右边界,用单个空格隔开;否则输出 nono。

    【输入样例】

    5
    5 6
    1 5
    10 10
    6 9
    8 10
    

    【输出样例】

    1 10

    解析:
    反正贪心就完事了。
    参考代码:
     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 using namespace std;
     7 int n;
     8 struct p{
     9     int begin,end;
    10 }a[50010];
    11 bool cmp(p a,p b)
    12 {
    13     return a.begin<b.begin;
    14 }
    15 void solve()
    16 {
    17     int k=a[1].end,cnt=1;//cnt计数器,看是否符合要求 
    18     for(int i=2;i<=n;i++)
    19     {
    20         if(a[i].begin<=k&&a[i].end>=k)//两区间不属于包含关系,且可以合并 
    21         {
    22             k=a[i].end;
    23             cnt++;
    24         }
    25         else
    26         {
    27             if(a[i].end<=k) cnt++;//两区间属于包含关系 
    28             continue;
    29         }
    30     }
    31     if(cnt==n) cout<<a[1].begin<<" "<<k<<endl;
    32     else cout<<"no"<<endl;
    33 }
    34 int main()
    35 {
    36     cin>>n;
    37     for(int i=1;i<=n;i++) cin>>a[i].begin>>a[i].end;
    38     sort(a+1,a+n+1,cmp);
    39     solve();
    40     return 0;
    41 }
  • 相关阅读:
    oracle 不走索引的原因
    SQL Server索引的维护
    Advanced SQL: Relational division in jOOQ
    文件的逻辑与物理结构
    数据库的物理结构和逻辑结构
    监控失败作业
    设计高效sql一般经验谈
    如何创建效率高sql-建立索引
    sql索引的填充因子多少最好,填充因子有什么用
    LDAP协议
  • 原文地址:https://www.cnblogs.com/DarkValkyrie/p/10691935.html
Copyright © 2020-2023  润新知