NOIP基础算法——分治与贪心 一、分治思想 分治法,又叫分治策略,顾名思义,分而治之。 它的基本思想:对于难以直接解决的规模较大的问题,把它分解成若干个能直接解决的相互独立的子问题,递归求出各子问题的解,再合并子问题的解,得到原问题的解。 通过减少问题的规模,逐步求解,能够明显降低解决问题的复杂度。 二、分治法的适用条件 能使用分治法解决的问题,它们一般具备以下几个特征: ①该问题可分解成若干相互独立、规模较小的相同子问题; ②子问题缩小到一定的程度就能轻易得到解; ③子问题的解合并后,能得到原问题的解; 分治法在信息学竞赛中应用非常广泛,使用分治策略能生成一些常用的算法和数据结构,如快排、最优二叉树、线段树等;还可以直接使用分治策略,解决一些规模很大、无法直接下手的问题。 三、分治的三步骤 ①分解:将要解决的问题分解成若干个规模较小的同类子问题; ②解决:当子问题划分得足够小时,求解出子问题的解。 ③合并:将子问题的解逐层合并成原问题的解。 在划分问题时,可以采用递归策略,把一个大问题逐步分解成规模较小的子问题,直至可以直接求出子问题的解;再将子问题逐层合并,返回到顶层,得到原问题的解。 根据分治策略的划分原则,把原问题划分成多少个子问题才合适呢?各个子问题的规模应该多大才合适呢? 一般来说,每次划分成2个子问题,每个子问题的规模差不多最合适。合并解时要
原创力文档

文档评论(0)