NOI竞赛大纲提高组算法详注
基础算法:
贪心:
定义:在进行问题求解的时候,不从整体考虑结果,只考虑当前最优,
得到的是在某种意义上的局部最优解。
适用条件:整体最优一定满足局部最优,并且不依赖后面要做出的选择。
递推:
定义:优当前状态或已知的几个状态求出下一个或之后的某个状态。
适用条件:状态之间存在明显状态转移方程。
递归:
定义:将一个问题划分为多个子问题进行求解。
二分:
定义:就是把一个复杂的问题分成两个相似的子问题,再把子问题分成更
小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的
解的合并。
适用范围:查找有序序列中是否存在满足某条件的元素,第一个满足某条
件的元素的位置,最后一个满足某条件的元素的位置。 一般也用于求最大值最
小或最小值最大问题。
二分查找模板:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
while(l<r) { mid=l+r>>1; if(条件)r=mid; else l=mid-1; }
倍增
数值处理算法:
排序算法:
冒泡排序,选择排序,插入排序,归并排序,快速排序,堆排序,树形选择排序,
桶排序,基数排序
图论:
深度优先遍历,广度优先遍历,最近公共祖先,最小生成树,次小生成树,
单源最短路,单源次短路,欧拉(回)路,二分图,强连通分量,缩点,割点 割边
数论:
唯一分解定理,欧几里得算法,扩展欧几里得算法,埃氏筛法,欧拉筛,同余,欧拉定理
欧拉函数,费马小定理,威尔逊定理,逆元,中国剩余定理,组合数学,线性代数
STL模板:sort,stack,vector,queue,deque,prioriity_queue,set,nultiset,map,pair
数据结构:
笛卡尔树,二叉平衡树,基环树,哈希表
字符串算 :KMP
因为本人时间有限(其实是太懒了),本博客还在陆续维护中,算法中的超链接也在进一步完善,谢谢大家的支持。