HDU-6180 Schedule
題意
給n個工作的開始時間和結束時間 每個工作需要用機器來完成 讓我們給這n個工作規劃機器 規劃出盡可能少機器數目 以及計算最少的機器時間(機器時間為機器使用的最終結束時間減去開始時間)分析
這道題其實就是一個工作的開始結束形成了一個線段 讓我們求多個線段不交叉不重疊拼接拼到一個方向上 拼合后 求最終剩下的線段方案數 和工作時間
所以這道題可以看出一個性質 那就是每次拍工作時 時根據上一個工作的結束時間 然后再在后面的工作開始時間里選擇一個最近的 排上去
如果剩下的工作開始時間都比當前機器的結束時間小 那么就重新開新的機器
我們可以從頭開始枚舉點 如果這個點的開始時間在所有機器的結束時間里能找到個最近的結束時間 表示可以續上 那么我們就把這個工作的結束時間代替那個機器的結束時間 那么如何保證能找到那個點呢?
我們就需要對開始時間排序 保證當前處理的點 比他早開始的一定處理過了 盡可能地讓當前點的開始時間可以接上前面結束的工作
*所以得到思路
用set維護機器個數
set中的值表示開的機器個數
每次遍歷新規劃時 就是取這個規劃的開始點 看能否插在其中 如果可以就用新的結束點代替可以
插入位置的結束點
set中存的是每個規劃的終點 表示這個規劃目前機器的結束時間 如果可以繼續插入表示可以代替
上次的結束時間 更新為新的結束時間
注意對于每一個新點 我們對這個點的開始時間二分 有兩種情況
1 這個點能找到插入位置也就是有插入下界 那么范圍會是第一個元素到最后一個元素
2 這個點找不到插入位置 那么會返回begin() 表示這個時候要開新機器
最后 set中的數量就是機器的個數
過程中可以計算間隔
插入就直接計算 上一個和當前點的終點之差 新點 直接計算差值*
總結
以上是生活随笔為你收集整理的HDU-6180 Schedule的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌卫星地图下载器与万能地图下载器功能比
- 下一篇: R语言软件安装教程