Acwing Arithmetic Learning:数据结构(2)
2021-06-26 20:42
1091 查看
目录
数据结构(2)acwing
1.trie树
- 快速存储和查找字符串的集合
- 结构特征:
- 例题:Trie字符串统计 ?
2.并查集(近乎O(1))
- 思路
- 将两个集合合并
- 询问两个元素是否在一个集合中
-
基本原理:
每个集合用一颗树来表示,树根的编号就是整个集合的编号。每个节点存储他的父节点,p[x]表示x的父节点
-
问题:
- 问题1:如何判断树根:if(p[x] == x)
- 问题2:如何求x的集合编号:while(p[x] != x) x = p[x];
- 问题3:如何合并两个集合:px是x的集合编号,py是y的集合编号。p[x] = y,直接上图
优化:
1.路径压缩
- scanf使用%s会默认忽略“空格”和"回车",不用%c
- 上代码:
3.堆
- 概念:”小根堆“(顾名思义{根小于左右儿子})----》为“完全二叉树”(最后一行可以不满,以上全满),上图
-
存储方式(一维数组存储)
- x的右儿子:2x+1
如何手写一个堆?
插入一个数
heap[ ++ size] = x;up(size);
求集合中最小值
heap[1];
删除最小值
heap[1] = heap[size];size --;down(1);
删除任意一个元素
heap[k] = heap[size];size --; down(k);up(k);
修改任意一个元素
heap[k] = x;down(k);up(k);
相关文章推荐
- AcWing 829.模拟队列
- comms.nottingham.ac.uk/learningtechnology
- Acwing-103. 电影
- AcWing 57 数字序列中某一位的数字
- AcWing 77 翻转单词顺序
- AcWing 106 动态中位数
- AcWing 793. 高精度乘法
- Learning Data Structure_1_数据结构绪论和算法
- AcWing 828.模拟栈
- AcWing 63 字符串中第一个只出现一次的字符
- AcWing 78 左旋转字符串
- AcWing 107 超快速排序
- AcWing 790. 数的三次方根(C++算法)
- AcWing 794. 高精度除法(C++算法)
- AcWing 801. 二进制中1的个数(C++算法)
- AcWing - 332 - 股票交易 = 单调队列优化dp
- AcWing 827.双链表
- AcWing 68 0到n-1中缺失的数字
- AcWing 82 圆圈中最后剩下的数字
- 《A guide to convolution arithmetic for deep learning》中文翻译