问题描述
假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。)
算法设计
对给定的K个待安排活动,计算使用最少会场的个数
输入
第一行是一个整型数m(m<100)表示共有m组测试数据。
每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。
随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)
输出
对于每一组输入,输出最多能够安排的活动数量。
每组的输出占一行
示例输入
5
1 23
12 28
25 35
27 80
36 50
示例输出
3
解法
将开始时间和结束时间分别用两个一维数组记录,并按升序排序。
对所有会议进行遍历,若其开始时间小于当前所有会场中最早结束的会议的结束时间,则需要为其开辟新会场,且此时所有会场中最早结束的会议的结束时间不变化。
若大于,则不需要开辟新会场,但是此时所有会场中最早结束的会议的结束时间需要更新,即是结束时间队列向后一位(因结束时间队列已被排序,不会出现乱序情况)