算法大纲

for oier

算法与数据结构

简单聊一聊算法学习。

整个的学习主要分成算法与数据结构两大块。我相信很多人也听过程序 = 算法+数据结构这句话,那我们就来分别讲讲这两个东西。

算法

这里我就不像教科书里那样赘述算法的定义性质什么的了。就直截了当的开始讲讲各个算法的特点,以及竞赛解题的思路

暴力

这或许不太能算的上一种算法,但这确实对于解题至关重要。对于一题算法题要是连暴力解法都想不出来,那这题也差不多拿不到了(裸题除外)。而其他算法(以及数据结构)也只是对代码进行重构优化

其他算法决定你能拿几分,暴力决定你能不能拿分

而这种算法之取决于你的思路,一些题目对智力要求不低,说他是最简单而又最难的算法不无道理。

搜索

BFS,DFS,A,IDDFS,IDA等等等等,是一条蛮重要的路线,而且和图论密切相关,是必须掌握的。

贪心

和暴力差不多,是人类最朴素的思想的产物。是一种重要的算法思想,很多题目或多或少都有他的身影,注意他是一种思想,而不想搜索一样是一种明确的算法。

分治

和贪心一样,也是一种重要的算法思想,log级别的优化经常用到

DP

动态规划,简直太简直了()

难题必备,具体思想我现在也没搞懂。

数学

慢慢学吧

字符串

不会很难(吧)

图论

不会,以后再说。

既然是大纲,就简单写一写了,我也没有时间和实力展开写,以后再说

数据结构

也是很重要的一块,特别是高级数据结构,题目难度不亚于DP。

基本数据结构

大部分已经用STL实现,NOIP = C语言+STL,STL要熟练掌握

数据结构和算法也密不可分,比如BFS就要借用队列来实现。

高级数据结构

树,树,树还是树。幸好的是STL的map已经实现了红黑树,这些奇怪的数也不用太纠结了,但线段树和树状数组这些东西,优化代码(题目数据很大)的时候还是需要的。

就先写这么多吧。

PS:最后提几句,oier真的挺不容易的,五大学科竞赛就信息学和高中学习相关最小。两头都得顾。别人铸剑三年,锋芒一朝。而我们要铸两把剑。特别是我这种小城市的学生,竞赛资源小,也不知道能走多远。只是不想放弃而已。等着吧,说不定就成了呢。