全部评论
提供另一个思路, 1.按照会议结束时间给会议排序; 2.建立一个priority_queue<pair<<int, int>> 的优先队列,first表示面试官上一场会议的结束时间,second表示面试官的面试场次,顶部元素为上一场会议结束时间最小的面试官; 3.遍历已经排序过的会议。对于每次会议而言,用该次会议结束时间来和优先队列顶部元素去比较,如果优先队列为空或者是顶部的first大于这次会议的结束时间,就加一个面试官进去,res++;反之看顶部元素面试场次如果达到限度,就删去,否则就更新first为这次会议结束时间,second++。
创建一个面试官类,三个属性,开始时间,结束时间,可用面试次数m。 会议按起始时间,结束时间排序,遍历。同时维护一个面试官列表,每次面试都遍历一下面试官列表,如果可以复用,就复用,然后次数减一。不可以复用就新增一个面试官。最后返回列表大小。
考的是扫描线,你可以去b战搜一下,参考力扣253题
贪心算法,所有起始时间排序,结束时间排序,然后同时遍历。起始小于结束,人数加一,起始加一。起始大于结束,起始加一结束加一。牛客必刷里有主持人的题目,一样的。
正解:https://mbd.baidu.com/ma/s/0TH0dnHe
所有重复时段里面,重复最多的场次就至少需要多少个面试官吧,不知道这样理解对不对
c++10行代码,用map,mp【s】+1,mp【e】-1。for(auto &【s,e】:mp)每次对value
线段树
我想几天了
差分数组记录,遍历累加差分数组获得最大累加值就是答案
优先级队列,leetcode253
我的想法是,先观察需要多少个科室x,买个科室k场会议,每一个科室需要多少人k/m(不能整除+1),然后下一个科室的为k-(上一场的m-k%m),然后重复。因为每个科室不同,第一科室剩余的人绝对可以不重复下一个科室的人,这样减去需要的会议次数,不知道想法对不对
这个蛮简单的 贪心就可以 不过要优化一下 不然可能会超时
经典的扫描线
一个map,遍历Omn,就行了
区间分组问题
原题。
相关推荐