全部评论
提供另一个思路, 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,就行了
送花
回复
分享
区间分组问题
送花
回复
分享
原题。
送花
回复
分享
相关推荐
点赞 评论 收藏
转发