在网上总是查不到很系统的练ACM需要学习的数据结构资料,于是参考看过的东西,自己整理了一份。

能力有限,欢迎大家指正补充。

分类主要参考《算法竞赛入门经典训练指南》(刘汝佳),山东大学数据结构模板

⊙基本数据结构

1.链表:

块状链表:没练过

Dancing Links:用于优化搜索。解决精确覆盖问题和重复覆盖问题的利器。

Knuth教授的始祖论文:Dancing Links中文版

Dancing Links介绍(这篇对DLX的工作过程演示的很详细)

DLX——Dancing Links(这篇对精确覆盖与重复覆盖解释的简洁清晰)

---------------------------------------------------

2.栈:先进后出表

题目:POJ 1690 消除多余括号

   LA 4817 大数+表达式求值

---------------------------------------------------

3.队列:先进先出表

普通队列(手动数组实现,链表实现,STL):BFS中常用。

循环队列:待补充

双端队列:待补充

优先队列:LA 3135, UVa 11997

单调队列:待补充

----------------------------------------------------

4.哈希表:

闭散列哈希:发生冲突时向下查找

开散列哈希(推荐使用):链表头插法解决碰撞问题

字符串哈希:各种字符串Hash函数

---------------------------------------------------

5.并查集:

数组实现:LA 3644

链表实现:待补充

树实现:UVa 11987

带权路径压缩:LA 6187,HDU 3038,LA 3027

---------------------------------------------------

6.二叉堆:

堆变种:左偏树:没练过……

============================================

⊙区间信息维护与查询

1.一些思想:

离散化:POJ 2528 注意离散化会出哪些问题

树形结构转线性结构:树形结构转线性结构方法汇总

POJ 3321,HDU 4366

排序后按一定顺序进行更新:HDU 4366

在线处理与离线处理:

---------------------------------------------------

2.树状数组:

利用树状数组解决几类问题

功能:单点修改,区间求和。区间修改,区间求和。

题目:LA 4329 需要思路转换

SPOJ 1329 树状数组好题,弱菜我至今尚未AC

HDU 4331 树状数组+扫描线+神思路

树状数组中区间修改与区间查询的技巧:HDU 4358 树状数组+神思路

二维树状数组:彻底弄懂二维树状数组

单点修改+求矩阵元素之和:POJ 1195

---------------------------------------------------

3.RMQ:求范围最小值

资料:RMQ and LCA

题目:UVa 11235

---------------------------------------------------

4.线段树:【完全版】线段树

点修改+区间查询:UVa 12299, POJ 2828 需思路转换,ZOJ 3349 简单DP+线段树

区间修改/区间查询/区间合并:POJ 2374 DP+线段树,HDU 4339, HDU 4391, HDU 4366, ZOJ 3324 区间合并,ZOJ 1391 注意细节,FZU 2105 思路+注意细节,HDU 3397 繁琐的区间合并,HDU 4351 区间合并好题

找最左端点:HDU 2871,HDU 1540,HDU 4614 线段树+二分,不算传统意义上的找最左端点

扫描线:做的不多不好推荐

树链剖分:树链剖分

---------------------------------------------------

5.线段树变种:

二维线段树:没练过

主席树:UPC OJ 2224 / “浪潮杯”山东省第四届ACM大学生程序设计竞赛 1008 Boring Counting

http://blog.csdn.net/metalseed/article/details/8045038

http://seter.is-programmer.com/posts/31907.html

划分树:求第K元素

http://wenku.baidu.com/view/8fc6bc365a8102d276a22fa0.html

http://blog.csdn.net/zxy_snow/article/details/6681086

http://www.notonlysuccess.com/index.php/divide-tree/

归并树:求任意区间第k小数。没练过

============================================

⊙字符串

1.Trie(字典树):动态建树/静态建树/节点计数

题目:LA 3942(Trie+动归,至今一直TLE),UVa 11732(Trie性质),POJ 2513(动态建树),BNU OJ 29355(Trie+计数),UVa 11488(动态建树)

---------------------------------------------------

2.KMP算法:KMP算法详解

题目:

POJ 3450,POJ 2406,POJ 1961

HDU 3336,HDU 3746,HDU 1358,HDU 2087,HDU 2594

URAL 1423,URAL 1684,URAL 1732,SGU 284

拓展KMP:求模式串和主串的每一个后缀的最长公共前缀。

http://wenku.baidu.com/view/1f6e5223dd36a32d737581d1.html

---------------------------------------------------

3.AC自动机:http://www.notonlysuccess.com/index.php/aho-corasick-automaton/

---------------------------------------------------

4.后缀数组:http://www.notonlysuccess.com/index.php/sa/

----------------------------------------------------

5.后缀自动机:可以实现后缀数组的所有功能,时间复杂度和空间复杂度都是O(n)

陈立杰课件:http://wenku.baidu.com/view/7afa5828ed630b1c59eeb512.html

推荐资料:

http://www.neroysq.com/?p=76

http://fanhq666.blog.163.com/blog/static/8194342620123352232937/

http://hi.baidu.com/myidea/item/142c5cd45901a51820e25039

http://blog.sina.com.cn/s/blog_70811e1a01014dkz.html

http://www.cnblogs.com/GBRgbr/p/3236451.html(自己写的一篇后缀自动机的构造演示,厚颜无耻的贴出来……)

---------------------------------------------------

6.最长公共前缀(LCP):没练过

============================================

⊙各种二叉树

1.笛卡尔树:没练过

2.名次树:对键值而言,它是二叉排序树,对优先级而言,它是堆。没练过

功能:找出第k小元素,求值x的名次。

(上面这俩是不是同一个东西?)

---------------------------------------------------

3.伸展树:快速分裂合并

---------------------------------------------------

4.SBT:http://www.notonlysuccess.com/index.php/sbt/

 ---------------------------------------------------

5.求第K元素的各种方法:待补充

----------------------------------------------------

6.KD树:没练过

动态树问题:http://wenku.baidu.com/view/75906f160b4e767f5acfcedb.html

http://wenku.baidu.com/view/8f2a07d276a20029bd642dae.html

ACM数据结构相关资料整理【未完成,待补充】的更多相关文章

  1. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...

  2. 基于IOS上MDM技术相关资料整理及汇总

    (转自:http://www.mbaike.net/special/1542.html) 一.MDM相关知识:MDM (Mobile Device Management ),即移动设备管理.在21世纪 ...

  3. libmodbus相关资料整理

    /****************************************************************************** * libmodbus相关资料整理 * ...

  4. http连接优化与浏览器允许的并发请求资源数相关资料(整理转载)

    网页性能优化相关资料: https://developer.yahoo.com/performance/rules.html#page-nav 前端技术的逐渐成熟,还衍生了domain hash, c ...

  5. 神经机器翻译(NMT)相关资料整理

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 简介 自2013年提出了神经机器翻译系统之后,神经机器翻译系统 ...

  6. SOA相关资料整理分享

    昨@幸福框架同学问能否推荐SOA一些资,.想想之前看过不少资料文档,就整理分享下,有需要的可以参考下. 文章链接 理解面向服务的体系结构中企业服务总线场景和解决方案,第 1 部分 SOA 和 web ...

  7. NB-IoT的相关资料整理(基本概念,技术优势,典型案例和当前的进展)

            人与人之间的通讯规模已近天花板,物与物的则刚刚进入增长快车道.随着可穿戴.车联网.智能抄表等新兴市场的开启,工业4.0.智慧城市.智慧农业等理念照进现实,万物互联的时代正加速到来. 一 ...

  8. 微信小程序事件始末及相关资料整理

    转载请注明来源:前端之巅 微信公众号 小道消息 昨晚(9月21日晚)10:51,冯大辉在他的知名微信公众号小道消息上发了一篇7字标题的文章<微信应用号来了>,并加了"微信是一个操 ...

  9. DPark安装及相关资料整理

    最近需要处理海量数据的分布式计算及数据挖掘,经过多次选择(hadoop,Spark,DPark),最后还是选择了DPark,主要是看中DPark的轻量级及python的灵活性,且除了豆瓣外,在几个友公 ...

随机推荐

  1. Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1

    Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1[转] 1.一般来说MySQL(小于5.5.3)字符集设置为 ...

  2. 【转载】spring的普通类中如何取session和request对像

    原文地址:http://blog.csdn.net/yousite1/article/details/7108585 首先要在web.xml增加如下代码: <listener> <l ...

  3. IIS和MVC

    现象:MVC项目部署到IIS(7.5)后,浏览时只显示文件目录,不是网站 解决办法 1.服务器安装程序对应的Framework版本 2.服务器安装程序对应的MVC版本 3.安装CGI和ISAPI扩展: ...

  4. BZOJ 3714: [PA2014]Kuglarz

    Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+ ...

  5. JS中函数的基础知识

    函数 一.  函数定义 函数又叫方法,在程序里面函数是用来执行某些特定功能的代码.为了减少重复使用代码,可以把特定功能的代码做成函数,需要使用时拿出来调用.alert();就是一个很常见的.简单的函数 ...

  6. jQuery1.9.1--queue队列源码分析(非动画部分)

    jQuery.extend({ // 显示或操作在匹配元素上执行的函数队列 queue: function (elem, type, data) { var queue; if (elem) { // ...

  7. 在 Java 中如何更高效地存储和管理 SQL 语句?

    [编者按]还在为管理 Java 代码中的 SQL 语句而烦恼吗?让 Zemian 帮你摆脱困境吧!本文系 OneAPM 工程师编译整理 注意:使用java.util.Properties#loadFr ...

  8. 在运行jar时自动加载指定的jar包

    初学Java的人经常遇到的一个问题是:如果一个程序依赖某个文件夹下的一堆jar包,那么启动它的时候就需要在java -cp参数后面一个一个的加上jar包的名称,很不方便. 比如主程序类叫Main,在目 ...

  9. 全注解的SSH框架

    基于struts2.23 + spring2.5.6 + hibernate3.6.4 + hibernate-generic-dao1.0(除了spring,我整合的都是最新的GA包,hiberna ...

  10. 由CAST()函数在.NET1.1和.NET4.0下处理机制不同所引发的BUG

     .NET 1.1版本下使用日期强制转换函数,比如:"select cast(ActionDate as char(7)) as ActionDate  from ST_BookAction ...