从昨天到现在除了90%的颓废时间一直在研究一些分治的姿势,主要就是CDQ分治和整体二分。
首先推荐一些学习资料:
陈丹琦 《从 < Cash > 谈一类分治算法的应用》
许昊然 《浅谈数据结构题的几个非经典解法》
百度一下就可以get
CDQ分治
CDQ分治的关键在于,每个子问题不仅是解决它自身,并且用前一个子问题来求解后一个子问题。常用来将一些动态的问题转化到静态来解决,使问题处理起来更加方便。
使用CDQ分治需要满足一定的条件:
- 题目允许离线操作
- 修改操作对询问的贡献独立,且修改之间互不影响
- 修改对答案的贡献是确定的,与判定标准无关
NOI2007货币兑换是一个用数据结构维护DP决策的问题,它满足CDQ分治的条件。BZOJ1176Mokia是一个在线用数据结构维护一些数据信息的问题,我们可以转为离线操作,简化操作。BZOJ3262陌上花开是一个用数据结构维护三维偏序的问题,我们可以用CDQ分治来替代一维数据结构,避免写树套树这种二维数据结构。
CDQ分治在维护一些动态的凸包、半平面交问题也有一定应用,然而我这个计算几何幼儿园水平的连静态半平面交都不会,以后再学吧。
整体二分
二分是O