[蓝桥杯][算法提高VIP]A Careful Approach(全排列+二分)
題目描述
如果你認(rèn)為參加一個編程比賽讓你感到有壓力,那么請你想象你是一個空中交通管制員。因為人命關(guān)天,所以一個空中交通管制員必須在時刻變化的環(huán)境中專注于任務(wù),解決不可預(yù)知的事件。
讓我們將目光轉(zhuǎn)向飛機(jī)的著陸流程。飛機(jī)進(jìn)入目的地飛航情報區(qū)之后,就會報告自己的位置、方向和速度,然后管制員就需要制定計劃讓所有飛機(jī)按指令安全著陸。一般來說,連續(xù)的兩次著陸之間間隔時間越長,就越安全。因為這些額外的時間能夠讓工程師有機(jī)會對天氣變化以及其他突發(fā)事件作出反應(yīng)。
幸運(yùn)的是,有一部分計劃的制定可以自動化——這就是你來這里的原因。你會得到有關(guān)飛機(jī)著陸的腳本。每一個飛機(jī)都有一個安全著陸時間窗。你算出的指令必須要符合每個飛機(jī)的時間窗。另外,飛機(jī)的著陸時間點要盡量均勻,使得連續(xù)兩次著陸的最小間隔盡量大。例如,如果三架飛機(jī)分別著陸于10:00am、10:05am、10:15am,那么最小間隔是五分鐘,在頭兩架飛機(jī)之間。所有間隔不一定一樣,但是最小的間隔要盡量大。
輸入
多組數(shù)據(jù)。每個數(shù)據(jù)第一行為一個整數(shù)n,為飛機(jī)架數(shù)。接下來n行,每行兩個整數(shù)a[i],b[i]表示這架飛機(jī)只能在閉區(qū)間[a[i],b[i]]間降落。a[i]和b[i]的單位是分鐘。輸入的最后一行是一個零。
輸出
對于每組數(shù)據(jù),先輸出第幾組,然后輸出最小間隔,單位為分和秒,舍入到最近的整數(shù)。格式參見樣例。
樣例輸入
3
0 10
5 15
10 15
2
0 10
10 20
0
樣例輸出
Case 1: 7:30
Case 2: 20:00
思路:dotcpp網(wǎng)站上沒有給出數(shù)據(jù)范圍,數(shù)據(jù)很少,n最大只有8.最小距離最大化,很明顯是二分的思路,但是我們沒有辦法知道飛機(jī)的降落順序,因此就沒有辦法求出最優(yōu)解。因為數(shù)據(jù)量很小,所以我們枚舉所有的降落順序,然后二分去找最小的間隔,不斷的更新最終答案。
代碼如下:
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]A Careful Approach(全排列+二分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1+7什么时候发布(1综合频道高清直播)
- 下一篇: [蓝桥杯][算法训练]K好数(动态规划)