zoukankan      html  css  js  c++  java
  • 周老师的区间问题

    Description

    周老师无聊时乱写了 n 个区间,但处女座的他随后又想将 n 个区间整理合并,但他发现区间太多了,于是他想请你帮帮他

    Input

    每次测试输入多组数据(小于100组),对于每组输入数据:

    第一行为  n ,代表 n 个区间

    接下来 n 行,每行两个数 s , t 代表区间 [s,t]

    0 < n < 15000

    0 <= s <= t < 10000000 

    Output

    第一行输出一个数字 q ,代表合并后剩余的区间个数

    随后 q 行 按从小到大的顺序输出区间

    Sample Input
    3
    2 4
    1 3
    7 7
    Sample Output
    2
    1 4
    7 7

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        long long s;
        long long t;
    }zone[15005];
    
    bool cmp(node a,node b) {
        if(a.s!=b.s)
            return a.s < b.s;
        else
            return a.t < b.t;
    }
    
    int main()
    {
        int n,ans;
        while(~scanf("%d",&n)) {
            ans =0;
            
            for(int i = 0; i < n; i++)    {
                scanf("%d %d",&zone[i].s,&zone[i].t);
            }
            
            sort(zone,zone+n,cmp);
    
            for(int i = 1; i < n; i++)    {
                if(zone[i].s <= zone[ans].t&&zone[ans].t < zone[i].t) {
                    zone[ans].t = zone[i].t;
                }
                
                else if(zone[i].s <= zone[ans].t&&zone[ans].t >= zone[i].t) {
                
                }
                else if(zone[i].s > zone[ans].t) {
                    ans++;
                    zone[ans].s = zone[i].s;
                    zone[ans].t = zone[i].t;
                }
            
                    
            }
            
            cout<<ans+1<<endl;
            for(int i = 0; i <= ans; i++)
                printf("%lld %lld
    ",zone[i].s,zone[i].t);
            
            
        }
        return 0;
    }
     
  • 相关阅读:
    textarea组件
    switch组件
    slider组件
    radio组件
    picker-view组件
    picker组件 label组件讲解
    weui 框架
    微信小程序 input 组件
    在php中获取 数据库的内容,返回到页面
    微信小程序 form 组件
  • 原文地址:https://www.cnblogs.com/jj81/p/8098556.html
Copyright © 2011-2022 走看看