博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~
http://www.cnblogs.com/chenxiwenruo/p/7495310.html
特别不喜欢那些随便转载别人的原创文章又不给出链接的
所以不准偷偷复制博主的博客噢~~

数据结构和算法模板系列之总览

很早前就打算将自己学过的数据结构和算法等知识和模板做个整理,但一直没有抽出时间来弄。现在打算抽空一点时间陆陆续续地将自己平时用的模板都贴上来,这里先做个综述。

主要针对那些想要准备机试、刷题或者刚刚接触ACM的初学者来说,对于AC大牛们,请出门左拐,秒刷一切。

建议用C++,因为有几个好处:

  1. 同样的代码,C++比java快,至于其他语言我就不太清楚了,用C/C++或者java刷题的占大多数

  2. C++结构体比java的class要简洁方便很多,毕竟刷题不是那种大项目工程,所以简洁越好

  3. C++的自定义排序很方便很实用,java也可以,但不如C++简单方便。

这里我用*来表示难度级别,其中:

  • *:虐菜难度,这点都不会你好意思说你学计算机的嘛

  • **:普通难度,稍微认真学下就能懂滴

  • ***:地狱难度,咳咳,这个嘛,对于大多数人来说,得花费精力仔细去研究研究

另外,对于红色部分,一般保研/考研机试的不太会遇到(如果有遇到的童鞋,可以告知一声),但是像一些如微软等这些大公司以算法题为笔试,说不定可能会遇到,跟什么PAT、CCF认证简直就是不在一个档次,甩他们好几条街。。。

基本算法知识:

数据结构

  • STL运用,如queue、stack、vector、map*

  • 链表*

  • 并查集(一)入门**

  • 树状数组**

  • 线段树***

  • AVL树***(先给个模板链接吧,之后有时间更新个AVL的学习专栏,讲解一下模板,感觉网上大部分模板看起来都太复杂了)

图论

  • 邻接链表——链式前向星 (比建立vector要快)
  • dfs和bfs*

  • 前序、中序、后序*

  • 最短路**

  • 最小生成树**
  • 二叉树*

  • 邻接链表**

  • 拓扑排序**

  • 二分图匹配**

  • 网络流***

数学

字符串

  • 常用函数库*

  • LIS,最长上升子序列**

  • LCS,最长公共子序列**

  • 回文(暴力*,Manacher算法***)

  • 字符串匹配(暴力*,KMP***)

  • 字典树**

  • LCA(最近公共祖先)离线算法Tarjan+并查集 **

 DP

  • LIS,LCS,LCIS
  • 背包问题(01背包,完全背包)
  • 状态压缩dp
  • 区间dp

其它技巧

  • C++自定义排序
  • C++读写文件输入
  • #define用法

算法模板学习专栏之总览(会慢慢陆续更新ing)的更多相关文章

  1. Linux学习资料网站汇总链接(持续更新ing)

    排名不分先后. 学海无涯苦作舟. 博客: 1.slmba:LINUX博客原创大牛 2.edsionte's TechBlog:Linuxer (他的友情链接中还有一堆Linuxer,被公司屏蔽进不去. ...

  2. POJ 3041 匈牙利算法模板题

    一开始预习是百度的算法 然后学习了一下 然后找到了学长的ppt 又学习了一下.. 发现..居然不一样... 找了模板题试了试..百度的不好用 反正就是wa了..果然还是应当跟着学长混.. 图两边的点分 ...

  3. 【树论 1】 prim算法的学习和使用

    进阶版神犇可以看看本题解的姊妹篇 Kruskal算法的学习和使用 下面的内容是prim算法 但是最小生成树是什么呢? 标准定义如下:在边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值 ...

  4. Groovy学习专栏

    今天新开了一个groovy的学习专栏,因为最近工作中会用到Groovy模板. 然后就是在网上找了一下Groovy模板相关的东西发现ibm中在2005年就有讲到这个的,我勒个去,这么早,我初中都还没毕业 ...

  5. [算法模板]Kruskal重构树

    [算法模板]Kruskal重构树 kruskal重构树是一个很常用的图论算法.主要用于解决u->v所有路径上最长边的最小值,就是找到\(u->v\)的一条路径,使路径上的最长边最小. 图片 ...

  6. 推荐一个算法编程学习中文社区-51NOD【算法分级,支持多语言,可在线编译】

    最近偶尔发现一个算法编程学习的论坛,刚开始有点好奇,也只是注册了一下.最近有时间好好研究了一下,的确非常赞,所以推荐给大家.功能和介绍看下面介绍吧.首页的标题很给劲,很纯粹的Coding社区....虽 ...

  7. 匈牙利 算法&模板

    匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...

  8. Tarjan 算法&模板

    Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连 ...

  9. 关于统计变换(CT/MCT/RMCT)算法的学习和实现

    原文地址http://blog.sina.com.cn/s/blog_684c8d630100turx.html 刚开会每周的例会,最讨厌开会了,不过为了能顺利毕业,只能忍了.闲话不多说了,下面把上周 ...

随机推荐

  1. ES6 入门

    1.简介 ECMAScript 6.0 是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序, ...

  2. oracle用户权限和角色

    用户权限是最基本的数据库安全控制.其作用就是控制用户对数据的访问,sql语句的执行.当oracle用户创建的时候,可以通过授权来控制用户对数据的连接,数据库对象的操作等等. 在oracle中,分为两种 ...

  3. python分包写入文件,写入固定字节内容,当包达到指定大小时继续写入新文件

    第6行通过 for 循环控制生成 .log 文件的数量 第8行,如果该文件存在时先进行清空,然后再进行写入操作 第13行,将文件大小的单位转为MB 第14行,如果文件大小超过1MB时,跳出当前循环,重 ...

  4. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  5. 关于前缀和,A - Hamming Distance Sum

    前缀和思想 Genos needs your help. He was asked to solve the following programming problem by Saitama: The ...

  6. 合并多个Excel文件

    这条分享来自百度经验https://jingyan.baidu.com/article/e6c8503cb6ed7ee54e1a1811.html

  7. gitlab 使用流程

    gitlab 使用流程 1. 开发人员写代码,开发产品. 2. 测试人员进行测试,如果发现bug, 填写 Issues - List - new issus 3. 开发人员修复bug, 从master ...

  8. oracle ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout

    Mon Jun 11 21:59:52 2018LNS: Standby redo logfile selected for thread 2 sequence 132997 for destinat ...

  9. [转]Qt 之 QFileSystemWatcher

    简述 QFileSystemWatcher类用于提供监视文件和目录修改的接口. QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更. 调用addPath()函数 ...

  10. Photoshop 基础一 安装

     安装 版本介绍 学习教程  一.安装 1)注册Adobe账号,注册地址:Adobe注册 2)下载地址:Adobe下载 下载地址2:百度经验 3)安装:试用期7天的版本 二.版本介绍 1)最新版本:A ...