活动安排

背景:给定N个活动,以及他们的开始时间和结束时间。

  1. 求最大兼容的活动个数或者(穿过所有的区间,需要的直线条数) 
  2. 活动带权重,求收益最大
    • 按照最早结束时间排序
    • dp[i] 以第 i 个活动作为结尾的最大收益
    • 转移方程:dp[i]= max(dp[i],dp[j]+g[i].v)
    • j是能放在第i个活动前面的活动。
    • 例题   poj  Milking Time   AC代码
  3. 安排所有的活动最少需要几个教室
    • 活动按照最早开始时间进行排序
    • 建立优先队列(小顶堆),关键字是该教室里目前安排的活动的最晚结束时间
    • 将活动与优先队列的堆顶元素进行比较,如果活动的开始时间小于堆顶元素记录的结束时间,新开一个教室。
    • 如果活动的开始时间大于堆顶元素记录的结束时间,将该活动安排在该教室,更新该教室里活动的最晚结束时间。
    • 例题:poj 3190    AC代码

posted on 2020-01-03 21:52  哆啦只是个梦哦  阅读(136)  评论(0编辑  收藏  举报

导航