搞竞赛,不管是年轻一点的NOIP和NOI,又或者是大一点的ACM和IOI以及各种**杯之类的,如果仅仅停留在语言学习方面,是不行的,就犹如参加作文比赛,还在这个词什么意思,主谓宾怎么搭配,这样是出不了什么结果的。
竞赛的本质就是算法。编程久了就只剩算法和数据结构。下面介绍一下竞赛必会的一些算法。
基础算法(书籍):
数据结构与算法分析:C语言描述
程序员代码面试指南——IT名企算法与数据结构题目最优解
算法设计与分析基础 (Ananny Levitin著)
算法(Robert著 第四版)
编程原本
算法导论
算法技术手册
算法设计(王红梅编著 一本学校教材)
零散网络流传的文档
基础数学(书籍):
概率论与数理统计
离散数学及其应用
统计学的世界
统计学完全教程
线性代数及其应用
线性代数应该这样学
基础算法随想
1、基础(代码工具、算法基础工具)
掌握实现、分析和比较算法的基本原则和方法:
数据抽象
基本数据结构
集合类的抽象数据类型
算法性能分析的方法
案例分析
2、排序(很多算法的基础)
有序的重新排列一个序列中的元素是非常重要的基础算法,排序算法也是很多其他算法的基石
插入排序
选择排序
希尔排序
快速排序
归并排序
堆排序
与排序相关的问题(优先队列、选举、归并)
3、查找(Find it or Index it!!!)
从BIG数据集中找到指定的条目是非常重要的。
二叉查找树
平衡查找树
散列表
方法之间的关系和性能对比
4、图(图,算法王者)
图的主要内容是对象和它们之间的连接,连接可能有权重和方向。利用图可以为大量重要而困难的问题建模。图算法的设计非常重要。
深度优先搜索
广度优先搜索
连通性问题
Kruskal和Prim最小生成树
Dijkstra和Bellman-Ford最短路径算法
5、字符串(不得不喝人打交道并进行数值化处理)
字符串是现代应用程序中的重要数据类型。
字符串键的排序和查找的快速算法
子字符串查找
正则表达式模式匹配算法
数据压缩算法
6、背景 (Biger逼格)
科学计算简介
运筹学简介
计算理论简介
基于实践的模拟
B树
后缀数组
最大流量问题
搜索问题、问题转化、NP完全性
以上,如果掌握了这些知识,基本可以刀枪不入,法力无边,所向披靡了。
加入我们吧。