简要记录这个学期学习的所有算法,因时间关系,不进行详细介绍,只是告诉没学过的人有这么一些算法。想学的请自己去了解,勿喷。
贪心进阶算法
核心思想:局部最优导致整体最优。
例题:选课(使用结束时间排序,优先选结束最早的课程和开始最晚的课程)
三分算法
核心思想:
//需要l,r,lmid,rmid四个变量
lmid=l+(l+r)/3;rmid=r-(l+r)/3;
/*----------------------------*/
if(lmid<rmid) r=rmid; //然后再计算lmid,rmid
if(lmid>rmid) l=lmid; //然后与上面一样
例题:求二次函数的最小值
深搜(DFS)的剪枝算法
核心思想:结果没有比之前更优即不再考虑该结果;去除多余的判断;使用排序;
例题:猫坐缆车下山
广搜(BFS)的搜索优化
用C++的Map<string,int> m;进行标记。
STL标准容器:map
本学期的重点:字典树(数据结构)
核心思想:整合重复的前缀,节约空间。
AC自动机 (正在学)
核心思想:结合KMP算法和字典树,快速判断字符串是否出现。