CSU 1757: 火车入站(区间覆盖的最大覆盖深度)
【摘要】
题目:
Description
火车站人们总是在站台等待列车进站,一个站台有火车停留的时候就不能有其他火车进入,今天有n辆火车经过,已知它们进站时间Si以及出站时间Ti,进站时间到出站时间之间火车必须有一个站台给它停靠,问让所有火车都能按时停靠,至少要安排多少个站台给这些火车
Input
第一行输入一个正整数T,表示数据...
题目:
Description
火车站人们总是在站台等待列车进站,一个站台有火车停留的时候就不能有其他火车进入,今天有n辆火车经过,已知它们进站时间Si以及出站时间Ti,进站时间到出站时间之间火车必须有一个站台给它停靠,问让所有火车都能按时停靠,至少要安排多少个站台给这些火车
Input
第一行输入一个正整数T,表示数据组数
每组数据第一行输入一个正整数n,表示火车数量(n<=10000)
接下来n行,每行输入2个正整数Si,Ti,表示第i辆火车的进站时间和出站时间(Si<Ti<1e9)
思路:
其实就是n个闭区间,求一个点最多被多少个区间覆盖
代码:
-
#include<iostream>
-
#include<stdio.h>
-
#include<algorithm>
-
using namespace std;
-
-
int main()
-
{
-
int T, n, s[10001], t[10001];
-
cin >> T;
-
while (T--)
-
{
-
cin >> n;
-
for (int i = 1; i <= n; i++)scanf("%d%d", &s[i], &t[i]);
-
sort(s + 1, s + n + 1);
-
sort(t + 1, t + n + 1);
-
int ans = 0;
-
for (int i = 1, j = 1; i <= n;)
-
{
-
if (s[i] <= t[j])
-
{
-
if (ans < i - j)ans = i - j;
-
i++;
-
}
-
else j++;
-
}
-
cout << ans + 1 << endl;
-
}
-
return 0;
-
}
文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nameofcsdn/article/details/79855932
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)