ACM ---- 数据结构
米诺minoz
这个作者很懒,什么都没留下…
展开
-
划分树知识点详解
一、介绍概念1、划分树是一种基于线段树的数据结构。主要用于 快速求出(在log(n)的时间复杂度内)序列区间的区间内的第k大数。第 k 大数:在已经排序好的序列中,找 第 k 的数字就是 第 k 大数字例如 : 1 2 3 4 5 第 3 大数字是 3 4 3 6 5 1 第 2 大...转载 2018-08-07 16:06:33 · 333 阅读 · 0 评论 -
树链剖分 - 知识点
一、定义树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链。可以非常友(bao)好(li)的解决一些树上操作(友情提示:学树链剖分之前请先掌握线段树)二、思想树链剖分的思想比较神奇它的思想是:把一棵树拆成若干个不相交的链,然后用一些数据结构去维护这些链那么问题来了,如何把树拆成链?(1) 简单定义首先明确概念:重儿子:父亲...转载 2019-08-06 17:13:37 · 399 阅读 · 0 评论 -
线段树代码
以 hdu1166为例(区间求和、单点修改)一、定义const LL MAXX = 5e4+10;int sum[MAXX << 2];int a[MAXX];二、区间求和时,更新结点信息void PushUp(int id){ sum[id] = sum[id<<1] + sum[id<<1|1];}三、建树...原创 2019-08-06 10:52:31 · 400 阅读 · 0 评论 -
线段树从零开始
一、为什么使用线段树题目一:10000个正整数,编号1到10000,用A[1],A[2],A[10000]表示。修改:无统计:1.编号从L到R的所有数之和为多少? 其中1<= L <= R <= 10000.方法一:对于统计L,R ,需要求下标从L到R的所有数的和,从L到R的所有下标记做[L..R],问题就是对A[L..R]进行求和。这样求和,对于每个询问,需...转载 2019-08-05 15:02:01 · 236 阅读 · 0 评论 -
数据结构 —— 关键路径详解
转一、定义引入:1、AOV:有向图中,用顶点表示事件,用有向边表示活动之间开始的先后顺序,则称这种有向图为AOV(Activity On Vertex)网络;AOV网络可以反应任务完成的先后顺序(拓扑排序)。2、AOE:在实际应用中,活动除了先后关系外,还需考虑时间上的约束在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这...转载 2018-11-21 11:17:23 · 4554 阅读 · 0 评论 -
优先队列——Priority_queue 详解
转载大佬博客一、入门介绍1、优先队列是一种特殊的队列,这种队列会自动的把队列里的数排序(默认从大到小,使用“<”判断)而且还可以把数按照特定的方法排列!(包括结构体和重载"<")2、优先队列的头文件,需要包括:#include<queue>using namespace std;声明:一个优先队列声明的基本格式是: prior...转载 2018-10-11 20:58:11 · 644 阅读 · 0 评论 -
矩阵快速幂基础知识
转自 大佬地址/*先介绍以下矩阵的基础知识矩阵:有 n 行 m 列组成一个 n*m 的矩阵矩阵具有加减乘运算(除可以用乘间接地来表示,如A/B=a*(1/B),所以这里就不写除了)1.矩阵的 加 运算( 减 运算类似)满足的条件:两个矩阵的行、列 必须相同1 2 + 1 2 = 2 43 4 3 4 6 82.矩阵的乘运算满足的条件:...转载 2018-05-26 20:11:22 · 308 阅读 · 0 评论 -
矩阵快速幂(51nod)
1113 矩阵快速幂 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给出一个N * N的矩阵,其中的元素均为正整数。求这个矩阵的M次方。由于M次方的计算结果太大,只需要输出每个元素Mod (10^9 + 7)的结果。Input 第1行:2个数N和M,中间用空格分隔。N为矩阵的大小,M为M次方。(2 &lt;= N &lt;= 100, 1 &lt;=...原创 2018-05-27 22:09:34 · 253 阅读 · 0 评论 -
Bus of Characters(贪心、模拟栈+队列)
在角色巴士中有n排座位,每排都有2个座位。 第i排的两个座位的宽度均为w i厘米。 没有相同宽度的座椅。 公共汽车最初是空的。 每个2n站都会有一位乘客进入巴士。 有两种类型的乘客: 一个内向者总是选择两个座位都没人的一排。 在这些排中,他选择座位宽度最小的,并占据了其中的一个座位; 一个外向型的人总是选择有人的一排。 在这些排中,他选择了座位宽度最大的那个,并占据了空位。你会得到每...原创 2018-06-27 20:48:05 · 681 阅读 · 0 评论 -
高斯消元学习总结+例题
有具体的类型代码,先整理下来以后有空仔细分析转大佬博客整数类型高斯消元返回值的情况-2表示有浮点数解,但无整数解 -1表示无解 0表示唯一解 大于0表示无穷解,并返回自由变元的个数其他说明有equ个方程,var个变元。增广矩阵行数为equ,分别为0到equ-1,列数为var+1,分别为0到var.#include <algorithm>#inclu...转载 2018-07-29 21:48:46 · 4515 阅读 · 0 评论 -
树状数组知识点
一、概念树状数组又称为 二叉索引树 也称作 Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是 log(n),空间复杂度则为 O(n)这是因为树状数组通过将 线性结构转化成 树状结构,从而进行跳跃式扫通常使用在高效的计算数列的前缀和,区间和通常用下图来表示但是这个树是怎么构建的呐?这里就不得不感叹大牛们的...原创 2018-07-31 14:20:00 · 251 阅读 · 0 评论 -
树状知识详解(转载)
转自大佬博客树状数组基础树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和.另外一个拥有类似功能的是线段树. 具体区别和联系如下:1.两者在复杂度上同级, 但是树状数组的常数明显优于线段树, 其编程复杂度也远小于线段树.2.树状数组的作用被线段树完全涵盖, 凡是可以使用树状数组解决的问题, 使用线段树一定可以解决...转载 2018-07-31 16:48:10 · 314 阅读 · 0 评论 -
线段树知识点
首先线段树能解决什么问题假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点。线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)).线段树的原理,就是,将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为少量特定的子区间,通过对这些少量子区间的修改或者统计,来实现...原创 2018-07-31 16:49:50 · 372 阅读 · 0 评论 -
有关树状数组例题
1——————————A - StarsN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?Input每个测试实例第一行为一个整数N,(N <= 1...原创 2018-08-01 11:15:02 · 693 阅读 · 0 评论 -
树链剖分代码(洛谷3384)
题目链接题意:树链剖分模板题 (树链剖分+线段树)准备工作:第一步: 定义声明// 链式前向星存图 (**** 记得开2倍空间 ****)struct EDGE{ int to; int next;}edge[MAXX<<1];// 线段树结构体,存和、lazy标记 (**** 记得开4倍空间 ****)struct NODE{ ...原创 2019-08-13 09:14:40 · 373 阅读 · 0 评论