标签:数据结构
一. 定义 二分图是节点由两个集合组成,且两个集合内部没有边的图。 换言之,存在一种方案,将节点划分成满足以上性质的两个集合。 比如下图就是一个二分图,两个集合的元素可以用两种颜色表示,每条边上连接的点属于不同的集合,相同集合的两个点上没有边 注意:二分图中不存在元素为奇数的环 二 . 二分图的
合并有序数组 方法1-递归 //运用的思想就是比较谁大,谁就先被排进数组 public static void merge(int []a1,int i,int iEnd,int j,int jEnd, int []a2,int
定义 : 对一个有向图构造拓扑序列,排序类似流程图那样按先干什么后干什么这样排序 拿大学教学安排举个例子(图来自oi wiki) 先不要考虑操作系统到数据结构那条蓝线 。 那么我们要先学程序设计才能学习后面的算法语言,离散数学等等。那么在拓扑序列中,程序设计就要在算法语言,离散数学这些前面。
生成树 : 如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树 最小生成树 : 边权和最小的生成树叫做最小生成树。如果原图不连通,则没有最小生成树 求最小生成树有两种方法 : prim 和 kurskal 一. prim算法 将最小生成树看做一个集合,每次选取距离集合最近
「观前提醒」 「文章仅供学习和参考,如有问题请在评论区提出」 欧拉函数 定义 欧拉函数的符号表示是 (varphi (n)) ,表示 (1sim n) 中和 (n) 互质的数的个数。 例如,(varphi (12) = 4),即 (1,5,7,11) 。 性质 若 (n) 是质数, 则 (v
bellman-ford算法的思想 : 若有向图有n个点,m条边 。 扫描所有边,对每条边进行一次松弛(即对a,b为端点 , 权重为w的边,dist[b] = min(dist[a] , dist[a] + w )) 重复此流程(最多重复n次)直到没有更新操作发生 例题1 bellmanford板
一道入门的树形DP。 首先我们对于数据进行有序化处理,这便于我们利用数据结构特点(可排序性)来发觉数据性质(有序、单调、子问题等等性质),以便于后续的转化、推理和处理。有序化可以“转化和创造”性质 首先将视角从无根树切换为有根树,这样我们就可以得到一个带有最优子结构、无后效性、子问题重叠性的结构—
回文比较 步骤1.找中间点 用到了查找链表中间节点-快慢指针法 public ListNode middleNode (ListNode head){ ListNode p1=head; ListNode p2=head; while (p2!=
1. 图上bfs 例题 求距离 给你一张 n 个点 m 条边的无向简单图,点的编号为 1 到 n,每条边的长度都是 1 现在有 k 组询问,每组询问我们想知道两个点 u,v 的距离。 输入格式 第一行三个整数 n,m,k 分别表示图的点数、边数和询问数。 接下来 m 行,每行两个整数 x,y,表
传统TCP设计的可靠传输协议是一种基于TCP协议实现的可靠传输方法。下面是传统TCP设计的可靠传输协议的详细解释: 连接管理:传统TCP设计的可靠传输协议使用TCP协议进行连接管理。在建立连接时,客户端和服务器之间需要完成三次握手,以确保双方都准备好进行数据传输。在数据传输结束后,客户端和服务器之
说明 数组(含List)去重复在日常工作中经常遇到,很多时候用到Set数据结构,但有时候我们需要针对数据进行干预,这时候就需要用其他的实现方式了。以下列出各种的去重方式,基本含括了所有情况。 源码下载 https://github.com/microwind/algorithms/blob/ma
1001 Hide-And-Seek Game 题意: 给出一颗树,两人在树上特定两点来回走,问最早在那个节点相遇。 分析: 两条路径相交,则一条路径的LCA一定在另一条路径上。我们可以预处理一个dfs时间戳,结合LCA来判断路径相交。 由于本题的点数较小,所以我们可以枚举相交链上的每一个点,然后
A - First ABC (abc311 A) 题目大意 给定一个字符串,问最短的一个前缀,包含A B C这三个字符。 解题思路 注意到这个前缀的末尾字母一定是这三个字母中的一个,因此答案就是这三个字母出现位置最早的最大值。 神奇的代码#include <bits/stdc++.h>
1. 并不是每个算法都适用于所有的使用场景 2. 关注点 2.1. 数据是在哪里压缩、存储和解压的 2.2. 数据是从哪里来的、到哪里去 3. 数据压缩的使用场景 3.1. 线下压缩,客户端解压 3.1.1. 打包的应用程序或者电子游戏 3.1.2. 艺术家创作并共享他们的作品 3.1.3. 原
  小阿杰最近开始看数据结构啦嘿嘿嘿,   可惜小阿杰C语言功底稀薄,以此篇随笔记录一下我卑微的学习之路/苦涩/苦涩   首先define没啥好说的,在文件开头,定义一个固定不变的值。  #define MAXN 10000 //MAXN = 10000 ,在以下代码中出现的MAXN可用1000
有线电视网 题目描述 某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。 从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转播的总费用等于传输信号的费用总和。
Codeforces Round 886 (Div. 4) D. Balanced Round https://codeforces.com/contest/1850/problem/D 题意 给出 t 组的 n,k,和一个数组a,可对数组a进行两种操作: 交换元素位置 删除元素 求使得数组a中每
一些定义 先序,中序,后序遍历中的序是遍历根的顺序 层序遍历就是这个数的bfs序列 树的存储 有很多种存储方式,一般用结构体数组。 数组下标对应这个数的结点,既可以存左儿子右兄弟又可以存左儿子右儿子。 下面来看一些题真切的感受一下代码 例题1 遍历完全二叉树 http://oj.daima
「观前提醒」 「文章仅供学习和参考,如有问题请在评论区提出」 目录前言定义基本概念基本原理单点修改分析代码实现区间查询分析代码实现整体代码练手题目小结参考资料 前言 这也算是我写正儿八经的博客,因为没怎么写过,所以可能有些地方没讲好或者有点啰嗦。但是我也会尽可能地解释明白其中的具体实现方法。要