姬小野的博客

博呀博呀博呀客

P1525 关押罪犯_并查集

P1525 关押罪犯 传送门 这道题是用并查集来写的, 但普通的并查集是做不出的. 所以需要用到一些巧妙地思维. 首先给边排序, 权值更大的在前面. 用贪心的思想(类似Kruskal算法)遍历边, 直到某一条边的两个顶点必须在同一个集合里面(一共只有两个集合). 这题的难点就是如何判断两个顶...

2018-08-05 11:29:23

阅读数:55

评论数:0

P1111 修复公路_并查集_Kruskal

题目背景 AA 地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。 题目描述 给出A地区的村庄数 NN ,和公路数 MM ,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早...

2018-07-26 20:38:26

阅读数:28

评论数:0

静态二叉树

二叉树也可以是静态的, 和指针的动态所不同的是,二叉树的静态是用结构体数组实现的, 访问指针变成了访问数组下标所在结点, 原来指针指向的位置变成了存储下标. 可以说这种方法对于不了解指针的人来说是非常友好了. 结构体定义: struct Node { int data, left, ...

2018-07-14 10:06:41

阅读数:68

评论数:0

二叉查找树

什么是二叉查找树? 如何建立一棵二叉树? 首先, 定义结构体作为树的结点的存储方式. 获取数据 构建二叉查找树 插入函数 中序遍历二叉树 删除操作 前驱与后继 如何求得前驱和后继 findMax()函数 findMin()函数 删除的逻辑理解 完整代码 什么是二叉查...

2018-07-13 23:31:48

阅读数:27

评论数:0

前序+中序重建二叉树

如何构建一棵二叉树? 代码只有自己真正写的时候才会发现很多漏洞. 因为当我写好代码, 以为一切万事大吉的时候, 发现一切根本不是那么回事! 所有的一切都崩塌了! 输入一组数据就可以构建二叉树? too young too simple ! 不过我还是那样干了, 按照书上说的插入方法, 每次...

2018-07-13 16:43:55

阅读数:18

评论数:0

四种基础排序算法

希尔排序 归并排序 递归版本 非递归版本 希尔排序 希尔排序(ShellSort) 的思路有点奇特, 或许是书上表述的不清或许是我理解歪了, 真正了解希尔排序是怎样一种排序方法花了了差不多一个小时. 现在理解透了, 觉得真是很妙. 按照所规定的步长, 覆盖全部元...

2018-06-08 18:03:17

阅读数:84

评论数:0

map映射_映射规则_二维映射_STL

map是STL中映射. 使用起来还是很方便的. 支持自定义排序规则(对key) 支持多维映射 常用操作 #include < map> map< string, int> dict; map&am...

2018-04-15 14:34:10

阅读数:46

评论数:0

二叉堆_完全二叉树_优先队列

完全二叉树的逻辑结构是树结构, 但由于其特殊性, 数据结构中常用数组来存储. 访问父节点, 左子结点, 右子节点都很方便 数组存储以1为起点 假设有某一结点u A[u/2]为其父节点, 当且仅当u>1 A[u* 2]为其左子结点, 当且仅当u*2 ...

2018-03-12 22:54:18

阅读数:39

评论数:0

二叉搜索树_插入_查找_删除

声明: 第一次写二叉搜索树, 可能会有bug 这棵二叉搜索树以中序遍历的方式输出, 所以插入(存储的规则也是按照中序遍历的规则) #include <iostream> using namespace std; struct Node { ...

2018-03-11 23:45:17

阅读数:21

评论数:0

二叉树的遍历_前序-中序-后序_递归

前序遍历( Preorder Tree Walk). 按照根节点, 左子树, 右子树顺序给出节点编号. 中序遍历( Inorder Tree Walk). 按照左子树, 根节点, 右子树顺序给出结点编号 后序遍历( Postorder Tree Walk). 按照左子树, 右子树, 根节点顺序给...

2018-03-06 12:37:19

阅读数:49

评论数:0

二叉树的表达_结构体数组

思路是用结构体储存数的一个结点的信息, 其中包括parent, left, right; 因为是二叉树, 所以不必使用左子右兄弟法 同时, 因为本题二叉树的结点数量固定, 因此可以利用结构体数组来实现. 涉及几个操作: 建立一棵二叉树 求二叉树各结点的深度 求二叉树各结点...

2018-03-06 09:18:10

阅读数:63

评论数:0

有根树的表达_左子右兄弟表示法

这是<<挑战程序设计竞赛2>>上的一节, 介绍了用左子右兄弟的方法存储一棵有根树. 用递归的方法求出所有结点的深度, 复杂度为O(n) 或者是单独求出一个结点的深度(递归或是循环) 以及如何遍历一个结点的...

2018-03-06 09:13:33

阅读数:157

评论数:0

并查集基础

并查集是一种很有趣的数据结构. 最清楚说明并查集的例子是亲戚问题, 今天是大年初二, 四处亲戚来拜年, 学习并查集真是应景. 并查集是我新年学的第一种数据结构. 之前接触它的时候觉得这个名字的DS很复杂, 因为不了解且很难望文生义, 不过接触了之后, 发现比较简单的. 所以, 学算法千...

2018-02-17 19:20:34

阅读数:41

评论数:0

STL_queue_队列

包含在头文件 #include 有一下常用函数 push(x) 把x压入队尾 pop() 弹出队顶元素 front() 返回队顶元素 back() 返回队尾元素 size() 返回队列的元素数 empty() 返回bool数 简单代码示例 ...

2018-02-06 11:23:28

阅读数:38

评论数:0

STL_set_集合

——————2018-4-14更新——————— set中判定一个元素是否存在除了用find, 还可以用count()函数 如果存在, 返回一, 如果不存在, 返回0. (元素的数量) set的排序规则, 使用cmp结构体 #include <iostream&a...

2018-02-03 17:40:48

阅读数:35

评论数:0

STL_vector_不定长数组

vector是STL中的一种容器, 是一种不定长的数组. 包含在vector头文件中 使用方式为 vectorvec; //定义了一个vec数组 vector vec(10); //定义了元素数, 各元素都为0 有 size()函数 //返回数组元素...

2018-02-03 16:54:31

阅读数:87

评论数:0

双栈排序

此篇博客要讲的是双栈排序, 即已知一个不规则栈的元素, 利用另一个空栈, 进行排序. 我上一篇博客讨论了只用一个栈进行排序的情况, 因为栈这种数据结构的先入后出的特性, 只用一个栈很有可能无法全部排序, 只能获得字典序最大的排列. 而使用两个栈, 则可以全部排列. 如何利用两个栈排列呢?此处讨...

2018-01-23 13:51:33

阅读数:57

评论数:0

一个栈字典序排列

时隔这么久又重新学算法, 惭愧. 此题是牛客网一次比赛题, 拖了很久, 不过认真思考去做, 发现其实很简单. 简单地画个图, 推导一下排序过程, 就OK了. 百度了一下, 发现关于栈排序的博客大都是双栈全排的, 大概那个要更复杂些. 不多说 栈和排序 时间限制:C/C++ 1秒,...

2018-01-23 11:13:02

阅读数:91

评论数:0

字典树_Trie树_单词查找树

如果你觉得这篇博客对你有所帮助, 请在左边点个赞吧: ) 下面我们先提出几个问题: 已知有n个长度不等的母串, 以及一个长度为m的模式串, 求该模式串是否为其中一个母串的前缀. 这个问题应该如何解呢? 按照最常规的暴力方法, 使用线性搜索, 从头到尾挨个查找, 时间复杂度将会达到O...

2018-01-10 19:30:45

阅读数:56

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭