总结-分治
分治
分治法是一種效率很高的算法, 往往帶有一個(gè)log級的復(fù)雜度.
1. CDQ分治
- CDQ分治可以應(yīng)用到帶有修改操作的題目中, 對操作進(jìn)行分治, 通過考慮前一半操作對后一半操作的影響達(dá)到分治的目的.
- 應(yīng)用的條件比較苛刻
- BZOJ-1492-貨幣兌換cash-NOI2007-CDQ分治?優(yōu)化dp
- BZOJ-2716-天使玩偶angel-CDQ分治?能這樣做還得益于曼哈頓距離的特殊性
- BZOJ-2001-city城市建設(shè)-HNOI2010-CDQ分治?因?yàn)樽钚∩蓸銴ruskal算法是基于邊的算法, 所以可以對邊進(jìn)行分治
2. 二分答案
- 路由器安置(Routing)?二分答案, 然后用到二分查找. 比較巧妙地是二分半徑而不是直徑, 這樣可以避免出現(xiàn)小數(shù).
- BZOJ-3110-K大數(shù)查詢-ZJOI2013-整體二分?整體二分的做法是比較BT的, 因?yàn)榇鸢赣猩舷陆? 而且答案一定是前面的操作造成的, 所以直接對答案進(jìn)行二分. 用到了線段樹維護(hù)(也可以用樹狀數(shù)組). 思考: CDQ能做嗎?
- BZOJ-2440-完全平方數(shù)-中山市選2011-容斥原理-莫比烏斯函數(shù)-二分查找?二分答案用容斥原理判斷.
3. 三分法
- BZOJ-1857-傳送帶-SCOI2010?兩次三分. 因?yàn)槭莾蓚€(gè)單峰函數(shù).
總結(jié): 分治的思想很重要, 考場上如果能想到正確解法的話只要思路清晰, 代碼難度適中吧.
總結(jié)