zoukankan      html  css  js  c++  java
  • CSU 1757 火车进站 1757

    1757: 火车入站

    Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 463     Solved: 117    


    Description

    火车站人们总是在站台等待列车进站,一个站台有火车停留的时候就不能有其他火车进入,今天有n辆火车经过,已知它们进站时间Si以及出站时间Ti,进站时间到出站时间之间火车必须有一个站台给它停靠,问让所有火车都能按时停靠,至少要安排多少个站台给这些火车

    Input

    第一行输入一个正整数T,表示数据组数
    每组数据第一行输入一个正整数n,表示火车数量(n<=10000)
    接下来n行,每行输入2个正整数Si,Ti,表示第i辆火车的进站时间和出站时间(Si<Ti<1e9)

    Output

    每组数据输出至少需要安排多少个站台

    Sample Input

    1
    3
    1 3
    3 4
    4 6

    Sample Output

    2

    区间覆盖问题。
    用结构体存下时间和状态(进还是出),比如 1 3,4 5.排完序后就是 1l 3r 4l 5r ,遇l则表示进入一个区间,遇r则退出这个区间,记录最大的区间数即可。
    当数据 1 3,2 4时,排完序1l,2l,3r,4r。2l是在3r出之间就必须再加一个区间,其实就是一个数轴上,独立的一个区间,再来一个区间后,检查新区间的左端点是否在老区间里面,自然是和
    老区间的右端点比较,这道题就是多个区间,独立没有相交的区间忽略(火车可以直接开进来),求相交的区间个数。全部合成一张表,排序后扫描记录最大值即可。

    注意刚开始Max直接在sum++哪里赋值,是不对的。因为可能--了很多次才++就不对了。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <stdio.h>
     4 #include <stdlib.h>
     5 #include <algorithm>
     6 using namespace std;
     7 const int maxn = 10005*2;
     8 
     9 struct Node {
    10     int x;
    11     char s;
    12     }node[maxn];
    13 
    14 int cmp(Node a,Node b) {
    15     if(a.x != b.x)
    16         return a.x < b.x;
    17     else
    18         return a.s < b.s;
    19     }
    20 
    21 int main()
    22 {
    23 //    freopen("in.txt","r",stdin);
    24     int T;
    25     cin>>T;
    26     while(T--) {
    27         int n;
    28         cin>>n;
    29         for(int i = 0; i < n*2; i++) {
    30             cin>>node[i].x;
    31             if((i+1)%2==1)
    32                 node[i].s = 'l';
    33             else {
    34                 node[i].s = 'r';
    35             }
    36         }
    37         sort(node,node+n*2,cmp);
    38         int sum = 0;
    39         int Max = -1;
    40         for(int i = 0; i < n*2; i++) {
    41             if(node[i].s == 'l') {
    42                 sum++;
    43                 Max = max(sum,Max);
    44             }
    45             else
    46                 sum--;
    47         }
    48         cout<<Max<<endl;
    49     }
    50 
    51     return 0;
    52 }
  • 相关阅读:
    Ionic2 自学须知的基本知识点
    Ionic2 启动加载优化总结
    Ionic2使用TypeScript调用自定义JavaScript脚本
    GPS坐标转百度地图坐标
    友情链接
    Python学习之路目录(收藏整理)
    基于Docker构建Jenkins CI平台
    KeepLived + nginx 高可用
    k8s-1.16 二进制安装
    Ansible自动化部署K8S集群
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256586.html
Copyright © 2011-2022 走看看