[USACO] Milking Cows

題目敘述的很清晰,關鍵的一步就是先把輸入數據按照開始時間進行排序。

問題就處在這裏了,我用的快排,可是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就萬事大吉,也沒有認真思考過別的方法。但肯定有大牛想得到的,努力學習啊!^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章