算法大纲
算法大纲
for oier
简单聊一聊算法学习。
整个的学习主要分成算法与数据结构两大块。我相信很多人也听过程序 = 算法+数据结构这句话,那我们就来分别讲讲这两个东西。
算法
这里我就不像教科书里那样赘述算法的定义性质什么的了。就直截了当的开始讲讲各个算法的特点,以及竞赛解题的思路
暴力
这或许不太能算的上一种算法,但这确实对于解题至关重要。对于一题算法题要是连暴力解法都想不出来,那这题也差不多拿不到了(裸题除外)。而其他算法(以及数据结构)也只是对代码进行重构优化
其他算法决定你能拿几分,暴力决定你能不能拿分
而这种算法之取决于你的思路,一些题目对智力要求不低,说他是最简单而又最难的算法不无道理。
搜索
BFS,DFS,A,IDDFS,IDA等等等等,是一条蛮重要的路线,而且和图论密切相关,是必须掌握的。
贪心
和暴力差不多,是人类最朴素的思想的产物。是一种重要的算法思想,很多题目或多或少都有他的身影,注意他是一种思想,而不想搜索一样是一种明确的算法。
分治
和贪心一样,也是一种重要的算法思想,log级别的优化经常用到
DP
动态规划,简直太简直了()
难题必备,具体思想我现在也没搞懂。
数学
慢慢学吧
字符串
不会很难(吧)
图论
不会,以后再说。
既然是大纲,就简单写一写了,我也没有时间和实力展开写,以后再说吧
数据结构
也是很重要的一块,特别是高级数据结构,题目难度不亚于DP。
基本数据结构
大部分已经用STL实现,NOIP = C语言+STL,STL要熟练掌握
数据结构和算法也密不可分,比如BFS就要借用队列来实现。
高级数据结构
树,树,树还是树。幸好的是STL的map已经实现了红黑树,这些奇怪的数也不用太纠结了,但线段树和树状数组这些东西,优化代码(题目数据很大)的时候还是需要的。
就先写这么多吧。
PS:最后提几句,oier真的挺不容易的,五大学科竞赛就信息学和高中学习相关最小。两头都得顾。别人铸剑三年,锋芒一朝。而我们要铸两把剑。特别是我这种小城市的学生,竞赛资源小,也不知道能走多远。只是不想放弃而已。等着吧,说不定就成了呢。