基础数据结构与算法
Ink__Bamboo
心安则无事,心静则踏实,coding coding coding!!!
展开
-
最大子序列和问题
转载自:http://blog.csdn.net/luxiaoxun/article/details/7438315问题: 给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大 例如:整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21。对于这个问题,最简单也是最转载 2015-05-05 19:15:27 · 440 阅读 · 0 评论 -
平衡二叉树(解惑)
http://www.cnblogs.com/fornever/archive/2011/11/15/2249492.html平衡二叉树(解惑)平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1很显然转载 2014-12-03 15:23:42 · 610 阅读 · 0 评论 -
List与vector的区别
stl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。l转载 2014-08-10 16:16:46 · 421 阅读 · 0 评论 -
STL标准库中的算法函数
STL标准库中的算法函数转载自:http://www.cnblogs.com/xiaoqisheng/archive/2010/09/30/1839443.html非修改性序列操作(12个)类型函数名说明循环for_each()对序列中的每个元素执行某操作。查找f转载 2015-05-11 18:48:23 · 433 阅读 · 0 评论 -
树状数组,一维,二维
树状数组一维:百度百科:转载 2014-08-09 09:13:05 · 647 阅读 · 0 评论 -
树状数组学习总结
树状数组最大的特点就是求解特定区间的元素的和操作时间复杂度小O(lgn),现对于传统的顺序求和的操作树状数组在求解过程中采用了二进制的思想,巧妙地化解了多次求和的重复操作,在很大程度上提高了效率。上图是树状数组的存储于求解过程,图片给出的很详细,数组a存放的是原始的需要求和的元素,数组c存放的是利用二进制存储的各部分的和。在控制各部分求和的过程中有这样的过程操作,原创 2014-12-06 10:22:39 · 587 阅读 · 0 评论 -
树状数组之逆序数
其中操作的环节需要注意的是树状数组的本质是求小于的等于一个数的个数,所以求逆序数是需要进行相应的处理,以排序之后的下标减去该下标对应的元素进行的sum操作得到的结果就是逆序数。程序如下:#include #include #include #include using namespace std;const int N = 500005;struct Node{ int v原创 2015-01-23 09:32:07 · 463 阅读 · 0 评论 -
STL queue 用法
--Queue用法 2010-08-17 21:13:06| 分类:STL--标准模板库 | 标签:|举报|字号大中小 订阅#include #include #include /*调用的时候要有头文件: #include 或 #include +#include #include详细用法:定义一个queue的变转载 2014-08-08 12:08:12 · 558 阅读 · 0 评论 -
sort 与qsort的比较与调用方法
qsort和sort的区别 First qsort基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。函数对buf 指向的数据按升序排序。使用方法转载 2014-05-08 21:13:25 · 715 阅读 · 0 评论 -
并查集,学习详解
文章作者:yx_th000 文章来源:Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明,谢谢合作。 并查集学习: l 并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其转载 2014-05-03 09:21:01 · 443 阅读 · 0 评论 -
并查集小结
http://bchine.com/mjmjmtl/?p=306并查集大体分为三个:普通的并查集,带种类的并查集,扩展的并查集(主要是必须指定合并时的父子关系,或者统计一些数据,比如此集合内的元素数目。)POJ-1182经典的种类并查集POJ-1308用并查集来判断一棵树。。注意空树也是树,死人也是人。POJ-1611裸地水并查集POJ-1703种类并查转载 2014-05-03 22:28:56 · 485 阅读 · 0 评论 -
Wireless Network
Wireless Network Time Limit : 20000/10000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 3 Accepted Submission(s) : 3Problem DescriptionAn earthquake takes p原创 2014-08-10 11:49:12 · 494 阅读 · 0 评论 -
向量偏移——由“食物链”引发的总结
向量偏移——由“食物链”引发的总结转载自:http://hi.baidu.com/tomspirit/item/d1f2a19b2aaf36d27a7f0158http://poj.org/problem?id=1182这道食物链题目是并查集的变型,很久以前做的一次是水过的,这次仔细地研究了这“食物链”,无非就是运用向量偏移,从以前节点与节点转化成向量与向量的关系。我们可以转载 2015-04-01 14:04:01 · 714 阅读 · 0 评论 -
AOV网的所有拓扑排序实现的代码
代码出处:http://www.docin.com/p-63414702.html讲解了怎么实现拓扑排序的全部序列的输出,利用深搜的思想。#include #include #include using namespace std;typedef struct Node{int Ldata; //邻接点信息 Node *nextarc;//指向下原创 2015-04-05 15:16:09 · 2442 阅读 · 0 评论 -
约瑟夫问题描述
部分内容摘自百度百科:http://baike.baidu.com/link?url=G35Fbty_YrNnCT4VwmY84zFF5X-RlKTfHzPpNpOFTqS2IihHH2u0OjMzZAH8VUz8bE0c0HldP69Tz5_VFiQ0Wq问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。我们知道转载 2015-04-02 17:02:39 · 584 阅读 · 0 评论 -
背包问题第k优解
转载自:http://blog.csdn.net/daxiongrong/article/details/6061420题目:多人背包 问题编号:123 RQNOJ题目描述DD 和好朋友们要去爬山啦!他们一共有 K 个人,每个人都会背一个包。这些包的容量是相同的,都是 V。可以装进背包里的一共有 N 种物品,每种物品都有给定的体积和价值。在 DD 看转载 2015-04-23 19:58:14 · 1278 阅读 · 0 评论 -
printf("%*s);
转载自:http://www.cnblogs.com/yuaqua/archive/2011/10/21/2219856.html小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。转载 2015-04-11 22:46:31 · 703 阅读 · 0 评论 -
次小生成树
次小生成树的思想就是在最小生成树的基础上,去掉最小生成树中的一条边,在加入不在最先生成树中的一条边,并对重新生成的生成树选取权值最小的生成树,即为次小生成树。次小生成树的主要思路就是在prim算法求最小生成树的过程中,标记mmax[u][v]区间中的最大权值的边,可以这么理解假设此时u到v的边已经在最小生成树中,mmax[u][v]存储的就是在这些从u到v 的边中权值最大的边,即为原创 2015-04-15 20:11:49 · 432 阅读 · 0 评论 -
最近公共祖先---手动扩充占内存
How far away ?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7128 Accepted Submission(s): 2596Problem DescriptionThere are n转载 2015-04-21 16:05:35 · 501 阅读 · 0 评论 -
RMQ算法分析
转载自:http://blog.csdn.net/y990041769/article/details/38405063MQ算法,是一个快速求区间最值的离线算法,预处理时间复杂度O(n*log(n)),查询O(1),所以是一个很快速的算法,当然这个问题用线段树同样能够解决。问题:给出n个数ai,让你快速查询某个区间的的最值。算法分类:DP转载 2015-04-21 20:18:26 · 436 阅读 · 0 评论 -
2012腾讯实习笔试中看到的Catalan数
转载自:http://blog.csdn.net/jtlyuan/article/details/7440591卡特兰数:规定C0=1,而C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,C7=429,C8=1430,C9=4862,C10=16796,C11=58786,C12=208012,C13=742900,C14=2674440,C15=转载 2015-03-09 12:32:59 · 527 阅读 · 0 评论 -
用GDB调试程序
转载自:http://blog.csdn.net/haoel/article/details/2879GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“转载 2015-02-04 14:03:12 · 395 阅读 · 0 评论 -
N皇后问题的非递归算法
#include #include #define N 4using namespace std;int main(){int x[N+1],fg,k,i,s,n,j;n=N;i=1;x[i]=1;s=0;while(1){fg=1;for(k =i-1;k>=1;k--){if(x[i]==x[k]||abs(x[i]-x[k])==i-k)原创 2014-12-02 09:29:37 · 1061 阅读 · 0 评论 -
算法竞赛入门经典6.3.2层次遍历
算法竞赛入门经典6.3.2层次遍历输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个节点的值。每个节点都按照从根节点到它的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左括号之间没有空格,相邻节点之间用一个空格隔开。每棵树的输入用一对空括号()结束(这对括号本身不代表一个结点),如图所示。转载 2014-05-19 10:46:21 · 1024 阅读 · 0 评论 -
树状数组求区间和的一些常见模型
树状数组在区间求和问题上有大用,其三种复杂度都比线段树要低很多……有关区间求和的问题主要有以下三个模型(以下设A[1..N]为一个长为N的序列,初始值为全0):(1)“改点求段”型,即对于序列A有以下操作:【1】修改操作:将A[x]的值加上c;【2】求和操作:求此时A[l..r]的和。这是最容易的模型,不需要任何辅助数组。树状数组中从x开始不断减lowbit(x)(转载 2014-12-26 14:37:10 · 577 阅读 · 0 评论 -
树状数组(完整版)
转载自:http://blog.csdn.net/zhengxu001/article/details/8029790树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 传统数组(共n个元素)的元素修改和连续元素求和的复杂度分别为O(1)和O(n)。树状数组通过将线性结构转换成伪树状结构(线性结构只能逐个扫描元素,而树状结构可以实现跳跃式扫描转载 2014-12-26 16:11:13 · 507 阅读 · 0 评论 -
约瑟夫问题
网上找了很多,终于找到一个靠谱的连接,转载GX,原文连接:点击打开链接约瑟夫环约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围;从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。前几天,在一篇文章中得知了约瑟夫环的问题。然后,转载 2015-03-26 17:36:26 · 486 阅读 · 0 评论 -
种类并查集
A Bug's LifeTime Limit : 20000/10000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 23 Accepted Submission(s) : 8Problem DescriptionBackground Prof原创 2015-04-07 19:13:12 · 2184 阅读 · 0 评论 -
食物链----种类并查集
转载自http://blog.csdn.net/niushuai666/article/details/6981689题目链接:http://poj.org/problem?id=1182解题思路:这道题是并查集题目中的经典。。。而且比普通并查集提高了一个档次,下面在基础并查集的前提上讲解并查集的真正用法。基础回顾:find()函数找根结点的两种转载 2015-04-20 14:14:17 · 458 阅读 · 0 评论 -
最长公共子序列
随笔- 119 文章- 0 评论- 2080 经典算法题每日演练——第四题 最长公共子序列 一: 作用 最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法,作为码农,此算法是我们的必备基本功。二:概念 举个例子,cnblogs这个字符串中子序列有多少个呢?很显然有27个,比如其中的cb,cgs等等都转载 2014-04-12 10:06:43 · 639 阅读 · 0 评论 -
最长公共子序列打印路径
动态规划解最长公共子序列问题 c算法动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。转载 2014-04-12 10:37:31 · 1009 阅读 · 0 评论 -
数塔
数塔Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 31 Accepted Submission(s) : 19Problem Description在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样原创 2014-05-05 14:10:12 · 667 阅读 · 0 评论 -
charm bracelet 简单的01背包
Charm BraceletTime Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 22 Accepted Submission(s) : 12Problem DescriptionBessie has g原创 2014-05-05 16:35:42 · 591 阅读 · 0 评论 -
大数加法乘法
此文转载自http://blog.sina.com.cn/s/blog_698552160100qlwx.html当我们在做题时可能有时候会遇到数量级很大的比如10^100在对这种数进行处理时显然直接用电脑来计算是不可能的long long也才64位 大约是36893488079550387200才10^20显然不够,这个时候我们就要用到大数处理了大数处转载 2014-04-07 11:40:26 · 1015 阅读 · 0 评论 -
poj1002
487-3279Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 26 Accepted Submission(s) : 4Problem DescriptionBusinesses like to ha原创 2014-04-02 22:11:18 · 569 阅读 · 0 评论 -
字典树
字典树: 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 字典树的基本功能是用来查询某个单词(前缀)在所有单词中出现次数的一种数据结构,它的插入和查询复杂度都为转载 2014-04-06 08:23:03 · 554 阅读 · 0 评论 -
poj3461
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 7493 Accepted: 2925DescriptionThe French author Georges Perec (1936–1982) once wrote a book, La disparition, w原创 2014-04-06 16:58:03 · 577 阅读 · 0 评论 -
poj2418Hardwood Species
Problem A Time Limit : 20000/10000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 10 Accepted Submission(s) : 2Problem DescriptionHardwoods are the botanical原创 2014-08-03 11:15:49 · 667 阅读 · 0 评论 -
hdu1062
Text ReverseTime Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 25 Accepted Submission(s) : 13Problem DescriptionIgnatius likes to w原创 2015-03-17 21:51:10 · 1100 阅读 · 0 评论 -
hdu1686
OulipoTime Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 7 Accepted Submission(s) : 4Problem DescriptionThe French author George原创 2015-03-18 10:58:19 · 674 阅读 · 0 评论