南阳OJ-14-会场安排问题---区间不相交

Posted 努力努力再努力x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了南阳OJ-14-会场安排问题---区间不相交相关的知识,希望对你有一定的参考价值。

题目链接:

http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=14

题目描述:

学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。

思路:

尽可能多的选取区间使得两两不相交。按照右端点排序,然后依次选取第一个右端点,然后除去与之相交的区间,选下一个右端点,重复如此。证明过程见算法竞赛入门经典P232

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 const int maxn = 1e4 + 10;
 8 int T, n;
 9 struct node
10 {
11     int x, y;
12     bool operator < (const node a)const
13     {
14         return y < a.y;
15     }
16     node(){}
17     node(double x, double y):x(x), y(y){}
18 };
19 node a[maxn];
20 int main()
21 {
22     cin >> T;
23     while(T--)
24     {
25         cin >> n;
26         for(int i = 0; i < n; i++)
27         {
28             cin >> a[i].x >> a[i].y;
29         }
30         sort(a, a + n);
31         int time = 0, ans = 0;
32         for(int i = 0; i < n; i++)
33         {
34             if(a[i].x > time)
35             {
36                 time = a[i].y;
37                 ans++;
38             }
39         }
40         cout<<ans<<endl;
41     }
42     return 0;
43 }

 

以上是关于南阳OJ-14-会场安排问题---区间不相交的主要内容,如果未能解决你的问题,请参考以下文章

思维南阳理工 14 会场安排问题

活动安排问题

会场安排问题

会场安排问题

贪心算法-活动安排问题

suseoj 1210: 会场安排问题 (贪心)