HELLO WORLD--一起加油(🍺)!|

kingwzun

园龄:3年6个月粉丝:111关注:0

随笔分类 -  数据结构

线段树 __ 复习
摘要:线段树的结构 为什么叫线段树? 因为它是把原序列以及其子序列(一个个线段)组织成一棵树的形式。树的根节点为原序列,子节点依次对半分序列,直到叶节点,叶节点是单个数,也没办法再往下分了。 例如[1,7] 可以发现: 原本的区间,在最底层其实是一个元素构成的叶节点。 从根节点向下递归地过程中,节点的长度
31
0
0
扩展域并查集
摘要:扩展域并查集就是指:将并查集的状态由基本的:几个元素属于朋友,则放入并查集; 扩展为更多状态。 更多通过题目来理解把。 P2024 [NOI2001] 食物链 题意 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。 A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1
704
0
2
Trie树(字典树)
摘要:作用 看下面两个题: 给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。 答: 简单!map,短小精悍。 给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。 答: map !TLE警告! 这就需要字典树 概念 单词查找树,Trie树,是一种树形结构,是一
183
0
0
基本数据结构 _ 单调栈
摘要:单调栈 作用: 给定一个序列,求序列中的每一个数左边或右边第一个比他大或比他小的数在什么地方/是谁 时间复杂度: O(n) 思想: 当该元素可以入栈的时候,栈顶元素就是它左侧第一个比它小的元素。 模板代码 #include <bits/stdc++.h> #define ins 0x3f3f3f3f
22
0
0
树状数组
摘要:解决的问题 基本问题:单点修改,区间查询 利用差分:区间修改,区间查询 总的来说就是:频繁修改+区间查询 与线段树区别 树状数组可以解决的问题都可以用线段树解决。 两者的区别 树状数组的优点: 相比线段树系数系数要少很多 容易写,代码量小 线段树的优点: 可以解决复杂问题。 理解 代码 lowbit
33
0
0
二叉树
摘要:正常建树和遍历 先序遍历 void Pre(node *F){ if(!F)return; cout<<F->value; Pre(F->L); Pre(F->R); } 代码 /** *输入格式:ABC##DE#G##F### **/ #include<bits/stdc++.h> using n
119
0
0
并查集(Disjoint Set)
摘要:解决的问题 查找无向图是否成环 在无向图上,查询是否在同一个连通图中 思想 利用数组建树,数组元素值代表该位置的父亲结点,如果为数组元素值为本身代表为独立结点 找祖先 每次询问自己的父亲,直到查找到数组元素值为本身的点即为祖先。 合并两个圈 合并两圈=把a2图的头结点的父亲结点改为a1图的头结点 成
71
0
0
线段树
摘要:#解决问题: 在数组区间中 更新某个数字(updata); 求数组某区间和(query); 解决方法一and 二 ###一. 直接用数组 方法:略 分析: updata复杂度是O(1) -但 query复杂度O(n) 二. 前缀和 方法: sum_a[i]=a[1]+...+a[i] 求解区间和时:
45
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起