随笔分类 - 数据结构
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3376 题目大意: 编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 有P(1≤P≤100000)个指令.指令有两种: 1.移动(M):将包含X的立方柱移动到包...
阅读全文
摘要:Trie图 先看一个问题:给一个很长很长的母串 长度为n,然后给m个小的模式串。求这m个模式串里边有多少个是母串的字串。 最先想到的是暴力O(n*m*len(m)) len(m)表示这m个模式串的平均长度。。。 显然时间复杂度会很高。。。 再改进一些,用kmp让每一模式串与母串进行匹...
阅读全文
摘要:0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典....
阅读全文
摘要:树状数组是一个优美小巧的数据结构,在很多时候可以代替线段树。一句话概括就是,凡是树状数组可以解决的问题,线段树都可以解决,反过来线段树可以解决的问题,树状数组不一定能解决。 树状数组英文名称为Binary Index Tree,直译过来就是二进制索引树,我觉得二进制索引树更能说明其本质...
阅读全文
摘要:约瑟夫环问题(基本) n个人围成圈,依次编号为1,2,..,n,现在从1号开始依次报数,当报到m时,报m的人退出,下一个人重新从1报起,循环下去,问最后剩下那个人的编号是多少? 递归法 参见百度百科:Josephus(约瑟夫)问题的数学方法 递推式: 将这...
阅读全文
摘要:P1967 - 【NOIP2010冲刺十三模拟赛】外星密码 Description 有了防护伞,并不能完全避免2012的灾难。地球防卫小队决定去求助外星种族的帮助。经过很长时间的努力,小队终于收到了外星生命的回信。但是外星人发过来的却是一串密码。只有解开密码,才能知道外星人给的准...
阅读全文
摘要:整体二分和CDQ分治 有一些问题很多时间都坑在斜率和凸壳上了么……感觉斜率和凸壳各种搞不懂…… 整体二分 整体二分的资料好像不是很多,我在网上找到了一篇不错的资料: 整体二分是个很神的东西,它可以把许多复杂的数据结构题化简。它的精髓在于巧妙地利用了离线的特点,把...
阅读全文
摘要:在信息学竞赛中,经常遇到这样一类问题:这类问题通常可以建模成数轴上的问题或是数列的问题,具体的操作一般是每次对数轴上的一个区间或是数列中的连续若干个数进行一种相同的处理。常规的做法一般依托于线性表这种数据结构,导致了处理只能针对各个元素逐个进行,因此算法的效率较低。 线段树是一种能够有效处理区间...
阅读全文
摘要:树状动态规划定义 之所以这样命名树规,是因为树形DP的这一特殊性:没有环,dfs是不会重复,而且具有明显而又严格的层数关系。利用这一特性,我们可以很清晰地根据题目写出一个在树(型结构)上的记忆化搜索的程序。而深搜的特点,就是“不撞南墙不回头”。这一点在之后的文章中会详细的介绍。 首...
阅读全文
摘要:树形DP入门 poj 2342 Anniversary party 先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的...
阅读全文
摘要:1、序 该篇分别讲了散列表的引出、散列函数的设计、处理冲突的方法。并给出一段简单的示例代码。 2、散列表的引出 给定一个关键字集合U={0,1......m-1},总共有不大于m个元素。如果m不是很大,我们可以定义一个数组T[0...(m-1)],把U映射到数...
阅读全文
摘要:1、问题描述 给定一个正整数n,需要输出一个长度为n的数组,数组元素是随机数,范围为0 – n-1,且元素不能重复。比如 n = 3 时,需要获取一个长度为3的数组,元素范围为0-2。 2、准备 首先,让我们先构造如下函数: [cpp] view ...
阅读全文
摘要:数学之美系列六——图论和网络爬虫 数学之美系列 [离散数学是当代数学的一个重要分支,也是计算机科学的数学基础。它包括数理逻辑、集合论、图论和近世代数四个分支。数理逻辑基于布尔运算,我们已经介绍过了。这里我们介绍图论和互联网自动下载工具网络爬虫 (Web Crawlers) 之间的关系。顺便提...
阅读全文
摘要:装载自55242字符串AC自动机专栏 fail树 定义 把所有fail指针逆向,这样就得到了一棵树(因为每个节点的出度都为1,所以逆向后每个节点入度为1,所以得到的是一棵树) 还账… 有了这个东西,我们可以做很多事… 对于AC自动机的构造前面的文章已经讲了,而在查询的时候,有一点感...
阅读全文
摘要:AC自动机,可惜不能自动AC 转载:飘过的小牛 OIer55242 简介 Aho-Corasick automation 该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞...
阅读全文
摘要:定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。 主要操作 初始化 把每个点所在集合初始化为其自身。 通常...
阅读全文
摘要:转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS),因此不再对图的基本概念做过多的介绍,但是要先大致了解下图的几种常见的存储结构。...
阅读全文
摘要:【问题描述】 树是一种大家都不陌生的数据结构,它有可能是一颗空树或是一些满足要求的节点连接而成的有向边的集合。 一棵树只有一个根节点,根节点没有指向它的边。 除了根节点的每一个节点都只有一条边指向它。 出现环的图都不是树。 对一些节点连接而成的有向边的集合进行判定,判定每一组的输入数据构成的图是...
阅读全文
摘要:#include #include #include #include #include #include using namespace std; typedef struct MGraph{ string vexs[10];//顶点向量 in...
阅读全文
摘要://stack集合类是一个简单的堆栈的实现。 //这里有两个模板参数,T和size,指定堆栈中的元素类型和堆栈中项数的最大值。 //push 和 pop成员函数添加和删除堆栈中的项,并在堆栈底部增加。 #include #include ...
阅读全文