数据结构
Iridescent41
这个作者很懒,什么都没留下…
展开
-
数星星 Stars 题解
题目链接分析一道树状数组,但坑点比较多。。。首先在草稿纸上画图可以得知:星星的等级与xxx无关,至于yyy的大小有关,于是我们可以根据输入顺序一一将其插入树状数组进行维护,此星星的等级其实就是在插入前以111~星星的yyy的星星数量和。注意星星的坐标是从(0,0)(0, 0)(0,0)开始存,但树状数组不能够维护,所以要提前将所有星星的xxx加上一。(如果在求和函数中把限度跳到0就会卡死循环我就错了)代码#include <cstdio>#include <cstring&原创 2020-08-17 20:54:05 · 647 阅读 · 0 评论 -
树状数组学习笔记
定义树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。 —— by baidu实现用一个数组bit[i]bit[i]bit[i]表示从[i−lowbit(x)+1,x][i - lowbit(x) + 1原创 2020-07-26 22:16:18 · 114 阅读 · 0 评论 -
拓扑排序学习笔记
拓扑排序拓扑排序是对一张 有向 并且 无环 的图进行遍历排序。如果在图中所有的节点构成的序列AAA中,对于每一条边(x,y)(x, y)(x,y):xxx都出现在yyy的前面,则序列AAA就为这张图的拓扑序。关于入度和出度入度 :以节点xxx为终点的有向边的条数被称为xxx的入度。记作 deg(x)deg(x)deg(x) .出度 :以节点xxx为起点的有向边的条数被称为xxx的出度。例如在此图中,节点3的入度就为2 ,节点4的入度也为2.思想不断选择图中入度为0的节点入队(如上图中的节点原创 2020-07-11 12:25:54 · 177 阅读 · 0 评论 -
STL 技巧整理 7/22
STL 目录一览vectorqueuepriority_queuedequesetmultisetmapbitsetvector变长数组,内部基于倍增思想。声明#include <vector>vector<int> a;vector<int> b[250];struct node{...};vector<node> c;size/empty...原创 2020-07-07 14:11:17 · 206 阅读 · 1 评论 -
并查集学习总结
定义并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果,只能用并查集来描述。并查集是一种树型的数据结构,用于处理一些原创 2020-06-21 15:13:49 · 169 阅读 · 1 评论 -
二叉树相关代码
小球#include <cstdio>#include <cstring>const int MAXN = 25; int d, i;int s[1 << MAXN];int main() { memset(s, 0, sizeof(s)); scanf("%d %d", &d, &i); int k, n = (1 << d) - 1; for(int j = 1;j <= i;j ++) { k = 1;原创 2020-06-21 14:47:50 · 142 阅读 · 0 评论