原题:
解答:
最少需要几个主持人,即所有的活动可以分为最少几组,且组内的时间不重合,活动时间不重合即是下一个活动的开始时间大于上一个活动的结束时间,由此,把开始时间和结束时间分别存储到两个vector类型a和b中,然后将a、b按照从小到大顺序排序,以b,即结束时间为比较对象,使用a中的开始时间逐个和b中的结束时间作比较,如果小于,则需要分为两组,即主持人数poi加一,否则把b中的比较对象加一,即结束时间往后推一个,因为结束时间和开始时间是从小到大排序,所以,如果当前的开始时间大于等于当前结束时间,则容器之后的开始时间都会大于等于当前的结束时间,所以当前的结束时间没有比较必要,将i+1,结束时间往后推一个。推后一个后,如果当前开始时间小于当前结束时间,则应主持人数加一,当前开始时间应当位于上一个结束时间和当前结束时间之间。
第二张图为代码过程执行图,图中每一个箭头都是一个开始时间,都应该对应到坐标轴上的一个结束时间,箭头上有加号的都表示当前的组浮于上一组的上面。层层叠叠。
代码:
class