題目敘述的很清晰,關鍵的一步就是先把輸入數據按照開始時間進行排序。
問題就處在這裏了,我用的快排,可是1000數據量的測試總也過不去,調試才發現,快排寫錯了,我只是把開始時間進行了排序,可是相對應的結束時間並沒有跟着調整,結果出現了2萬多秒的時間間隔!!
唉!本來想用結構體定義一下的,但是一想兩個元素也不難就懶的寫,結果杯具發生了,代碼不清晰不說,還調試了好長時間,得不償失啊
剩下的程序邏輯不是很難,把所有情況考慮清楚馬上就可以AC了~~
分析的解法一:和我的思路是一樣的,它的快排用的是標準庫,所以自己要寫一個比較函數。。。
分析的解法二:此方法把開始和結束時間全都進行排序,只不過加了一個標記便於區別。比如對於實例排序完成時的結果如下(CSDN居然沒有插入表格功能?!我勒個去,無語。。。)
300 700 1000 1200 1500 2100
1 1 -1 -1 1 -1
於是可以看出有兩種情況(k作爲數組下標)
1.k=3或5時,恰好剛完成任務,工人數爲0,可以求出工作時間
2.k=4時,工人數不爲0,前一個任務剛結束,新的任務剛開始,所以可以求出空閒時間
此方法我沒有想到,總是認爲程序AC就萬事大吉,也沒有認真思考過別的方法。但肯定有大牛想得到的,努力學習啊!^_^