1. 程式人生 > >《挑戰程序設計競賽》學習筆記 (1)

《挑戰程序設計競賽》學習筆記 (1)

設計 allow 而且 硬幣 ack ket 程序設計 all 不能

2.2 貪心法

  • 貪心法是遵循某種規則,不斷貪心選取當前最優策略的算法設計方法。
    • 貪心法的求解思想是通過叠代地選取當前問題的局部最優解法來達成總體最優解,在叠代的過程中不斷地產生局部最優解和下一個與之前問題同構的子問題。
    • 貪心法所處理的問題總是具有最優子結構的性質:該問題的最優解包含子問題的最優解。
    • 使用貪心法處理的時候如何選取貪心策略非常關鍵,選定正確的策略往往要求一定的洞察力,驗證貪心策略的正確性可能使用數學歸納法或者反證法。
    • 與搜索和動規不同,貪心法的特點是解決問題的順序是固定的,而且不能回退。證明貪心策略在整體邏輯上一部分是為了證明貪心策略所確定的解題順序是否可以保證得到整體最優解,但是在具體的問題中這種目的可能不是那麽明顯。
  • 例題
    • 硬幣問題——入門,註意結合題目中硬幣面額他考慮貪心策略
    • 區間調度問題——嘗試證明
    • 字典序最小問題——理清思路,了解解題的一般方法,從題面中總結題幹推出有用的信息
    • 其他問題之 Saruman‘s Army:較易
    • 其他問題之?Fence Repair:了解自頂向下/自底向上的解決思路,強化解題的一般方法(此題自己想了一下,思路還算清楚,可以記錄下來供以後參考)
  • 練習題
    • 區間
      • POJ 2376:Clean Shifts
      • POJ 1328:Radar Installation
      • POJ 3190:Stall Reservations
    • 其他
      • POJ 2393:Yogurt Factory
      • POJ 1017:Packets
      • POJ 3040:Allowance
      • POJ 1862:Stripies
      • POJ 3262:Protecting the Flowers

《挑戰程序設計競賽》學習筆記 (1)