自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 平衡二叉搜索树——红黑树

平衡搜索树——红黑树)一.红黑树的性质1.红黑树的基本性质2.红黑树为何可以将时间复杂度降为O(lgn)首先,在了解红黑树之前我们应该知道平衡搜索树是一种进阶版的二叉搜索树。可是,普通的二叉搜索树在进行插入,删除等操作时,虽然在树高较低时执行的很快。然而,如果树的高度较高时,执行效率可能并没有链表高。前人们为解决此问题,便有人提出了使搜索树平衡的想法。此后,便出现了各种使搜索树平衡的算法,红黑树便是其中的一种,它可以保证在最坏情况下进行基本动态集合操作的时间复杂度为O(lgn)。一.红黑树的性质1.红

2022-03-12 05:06:23 663

原创 红黑树c++类模板代码

#include <iostream>#include <iomanip>using namespace std;#define RED 0 //红色结点#define BLACK 1 //黑色结点template<class T>class RbTreeNode{ public: unsigned int color; T key; RbTr

2022-01-15 10:53:53 454 1

原创 平衡二叉树和伸展树代码

平衡二叉树#include <iostream>#include <queue>using namespace std;typedef struct BSTNode{ int key; int height; int data; BSTNode *left, *right; BSTNode() = default; BSTNode(int k):key(k), height(1), data(0), left(NULL),

2022-01-10 09:21:56 444

原创 树状数组求解逆序对个数(含树状数组的入门)

树状数组(含lowbit的证明)一.树状数组介绍在学习树状数组之前,我们要先探究4个问题。1. 什么是树状数组?见名知意,就是用数组来模拟树形结构。那么又衍生出一个问题,为什么不直接建树呢?这个问题的答案是没有必要,树状数组就可以解决的问题没必要建树。2. 用来解决什么问题?和线段树一样用来解决区间上的更新、求和等操作。3.和线段树有什么区别其实树状数组可以解决的问题线段树都可以解决,但是树状数组的系数要少很多。4.优缺点优点是:修改和查询的时间复杂度都是O(logN),系数要比线段树少许

2021-11-30 13:48:38 882

原创 线段树(从入门到进阶)

首先,讲解线段树之前,应该了解到线段树应该是一种工具,可以将一些对于区间(或者线段)的修改、维护,从O(N)的时间复杂度变成O(logN)。一.线段树概念引入线段树是一种二叉树,也就是对于一个线段,我们会用一个二叉树来表示。比如说一个长度为5的线段,我们可以表示成这样:这代表着如果你要表示线段的和,那么最上面的根节点权值就等于两个儿子节点的权值之和。那么就可以得到:节点i的权值 = i节点的左儿子权值 + i节点的右儿子权值二.简单线段树三.区间+/-修改与区间查询四.区间乘除修改与查询

2021-10-31 13:45:00 1533 6

原创 线段树区间查询,单点修改,区间取模练习

这个取模讲道理没有特别好的办法,只能查到树最底层然后回朔。不过可以想到,如果两个取模的值都大于两个孩子的值,那么就不用进行更改操作。上代码:#include <iostream>using namespace std;#define ll long longconst int MAX = 1e6 + 10;ll n, m, a[MAX];inline ll ls(ll i) { return i << 1; }inline ll rs(ll i) { r..

2021-10-29 21:39:45 147

原创 二分图最大匹配——匈牙利算法

二分图最大匹配(一)、二分图的介绍1、定义2、充要条件(二)、二分图的匹配1、二分图的最大匹配2、增广路径3、匈牙利算法(1)、复杂度(一)、二分图的介绍1、定义二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点 i 和 j 分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。2、充要条件无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的

2021-08-07 17:00:17 9445 7

原创 Bellman——Ford算法

一.Bellman—Ford算法是用来干什么的. 我们都知道Dijkstra算法只能用来解决正权图的单源最短路径问题,但有些题目会出现负权图。这时这个算法就不能帮助我们解决问题了,而BellmanFord算法可以解决负权图且可以判断有无负权回路(迭代超过V-1次,就说明存在负权回路)的单源最短路径问题。. 它也有明显的缺点,它的时间复杂度是要高于Dijkstra算法的。二.算法流程....

2021-07-30 09:57:50 19084 16

原创 Dijkstra算法以及它的堆优化

单源最短路径问题描述给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。这个问题通常称为单源最短路径 [1] 问题。...

2021-07-18 09:30:54 4454

原创 **最短路径Dijkstra练习(牛客14352 旅行)**

时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述小z放假了,准备到RRR城市旅行,其中这个城市有N个旅游景点。小z时间有限,只能在三个旅行景点进行游玩。小明租了辆车,司机很善良,说咱不计路程,只要你一次性缴费足够,我就带你走遍RRR城。小z很开心,直接就把钱一次性缴足了。然而小z心机很重,他想选择的路程尽量长。然而司机也很聪明,他每次从一个点走到另外一个点的时候都走最短路径。你能帮帮小z吗?需要

2021-07-08 14:59:10 369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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