usaco job
第一問比較簡單,用貪心做就可以了。用now[i]記錄A中機器工作的時間,初始時為0。每次使當前最大工作時間最小,即找到一個j使得 now[j]+t[j]最小,其中t是A中機器j完成一次操作的時間。讓機器j完成這次操作,更新now[i],同時記錄第i件工作被完成的時間 fin[i]。
貪心的證明比較容易,這里就不說了(反證)。
第二問初看似乎無從下手,我們不妨換個角度,把A和B獨立開,換句話說,等A工作全部結束后B工作才開始,那么B和A是一樣的,用貪心求出這時每件工作被完成的時間sta[i]。
fin和sta中的數是單調遞增的,我們設想一下,把fin中最大的和sta中最小的數對應,記做某件工作完成的時間(因為所有工作都是一樣的),fin中次大的和sta中次大的數對應,記做另一件工作完成的時間,依此類推。去所有的完成時間最大的就是問題二的解。
單調性
這個圖可能更形象一些:
posted on 2009-02-01 22:15 SHFACM 閱讀(236) 評論(0) 編輯 收藏 引用 所屬分類: ACM