
数据结构
文章平均质量分 79
春弦_
让我们红橙作伴,活得潇潇洒洒......
展开
-
普通平衡树Treap
tree是binery search tree(BST),用heap的性质维护BST的平衡(尽可能让每个结点的左右子树大小相近,避免特殊数据让单词操作的复杂度退化为。注意: 数据保证查询的结果一定存在。原创 2022-10-11 21:43:20 · 296 阅读 · 0 评论 -
CDQ分治
离线,处理点对关系,常用于降维度,原创 2022-10-09 21:13:30 · 1484 阅读 · 0 评论 -
【数据结构2-2】线段树与树状数组 题解
头一次老老实实写完一个,发篇题解纪念一下——原创 2022-09-20 21:36:38 · 537 阅读 · 1 评论 -
求区间内共有多少种数字(莫队、树状数组、线段树、主席树)
此题数据较弱,不强制在线,O(nn)可以过开桶记录每个数据的个数,删除:从1->0即少了一个种类;添加:从0->1即多了一个种类。那就把数据加强QAQ然鹅这么惨烈吗。。。对于若干个询问的区间[l,r],如果他们的r都相等的话,那么项链中出现的同一个数字,一定是只关心出现在最右边的那一个的,例如:项链是:1 3 4 5 1。...原创 2022-08-28 23:53:22 · 1878 阅读 · 0 评论 -
基础莫队——对询问分块
以内,右端点变化是单调的。以上一次询问[L,R]为基础,,求[L’,R’],只需要一步步转移,花费。询问若干个区间内的情况将这些区间重新排序,尽量让前一个区间跳到后一个区间时变化较小。区间已经被重新排序过,所以要先把答案储存下来,在区间原位置编号处输出。先把所有询问[l,r]读入,把这些询问按照左端点递增排序,然后分成。加了一点组合数,每个区间长度是len,分母就是。这样一来,相邻两个询问的左端点变化在。添加从0->1即多了一个种类。,分子分母约分后记录下来。处理右端点,时间复杂度。......原创 2022-07-14 20:06:24 · 333 阅读 · 0 评论 -
树状数组&逆序对
任意给定一个集合a,用t[val]保存数值val1在集合a内出现的次数,那么数组t在[l,r]上的区间和∑i=1rt[i]\sum_{i=1} ^{r} t[i]∑i=1rt[i]就表示集合a中范围在[l,r]内的数有多少个。可以在集合a的数值范围上建立一个树状数组来维护t的前缀和。对于给定的序列a,倒序扫描之,对于每个数a[i]:数值范围较大时可以先离散化。241. 楼兰图腾第一遍输入同时正序扫描,可以保存下每个数前面比它大的数的个数和比它小的数的个数。第二遍逆序扫描,求出每个数后面比它大的数的个数和原创 2022-07-12 21:23:47 · 317 阅读 · 0 评论 -
并查集题选
PTA 家庭房产给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:其中是每个人独有的一个4位数的编号;和分别是该编号对应的这个人的父母的编号(如果已经过世,则显示);(0≤≤5)是该人的子女的个数;是其子女的编号。首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输出每个家庭的信息:其中人均值要求保留小数点后3位。家庭信息首先按人均面积降序输出原创 2022-07-08 22:12:24 · 291 阅读 · 0 评论 -
树状数组&&差分
树状数组的作用简单描述来便是:单点修改、区间查询。int lowbit(int x) {return x&(-x)};可以返回二进制数最低位1及它之后的所有0构成的二进制数。二进制数的负数是正数取反加一5(101) , -5(011) , lowbit(5)=1 (1)12(1100) , -12 (0100) , lowbit(12)=4 (100) 设更新得到的数组为c[](上图中浅蓝色圆形标注的),则c[]数组储存的是其分支出储存的值的和。 ......原创 2022-02-21 22:09:34 · 642 阅读 · 0 评论 -
Segment Tree——线段树入门
线段树是一种基于分治思想的二叉树结构,用于在区间上进行统计。每个节点代表一个区间,对于每个内部节点[l,r](编号p),左子节点代表区间[l,mid](编号p2),右子节点代表区间[mid+1,r](编号p2+1).可以用结构体数组保存一棵线段树,数组大小开到N*4P2068 统计和定义线段树struct segment_tree{ int l,r; long long sum;}tree[100010*4];建树void build(int p,int l,int r){ tre原创 2022-05-16 22:24:18 · 411 阅读 · 0 评论 -
Trie字典树
文章目录[P2580 于是他错误的点名开始了](https://www.luogu.com.cn/problem/P2580)[P5149 会议座位](https://www.luogu.com.cn/problem/P5149)[143. 最大异或对](https://www.acwing.com/problem/content/145/)[P4551 最长异或路径](https://www.luogu.com.cn/problem/P4551)[P6824 「EZEC-4」可乐](https://www原创 2022-05-06 19:06:08 · 482 阅读 · 0 评论 -
Huffman树,Huffman编码
哈夫曼树:带权路径长度WPL最短的多叉树(最优多叉树)考虑构造一棵包含n个叶子结点的k叉树,其中第i个叶子节点带有权值wiw_iwi,要求最小化∑wi∗li\sum{w_i*l_i}∑wi∗li,其中lil_ili表示第i个叶子节点到根节点的距离。——李东煜《算法竞赛进阶指南》先看一道简单的二叉哈夫曼树:P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G每次取出堆顶的两个合并入堆即可。#include<bits/stdc原创 2022-04-21 22:24:44 · 847 阅读 · 0 评论 -
二叉堆操作
天梯赛L2 关于堆的判断 (25 分)将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点; x and y are siblings:x和y是兄弟结点; x is the parent of y:x是y的父结点; x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[原创 2022-04-02 15:16:05 · 207 阅读 · 0 评论 -
天梯赛 L2 链表去重&&重排链表
7-28 链表去重 (25 分)给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来表示。原创 2022-04-02 11:24:32 · 277 阅读 · 1 评论 -
二叉树的遍历相关问题
文章目录二叉树的四种遍历方法给定前序+中序,后序输出给定后序+中序,前序输出给定前序+中序,层序输出给定后序+中序,层序输出给定完全二叉树后序,层序输出首先要了解二叉树的四种遍历方法。这篇博客讲得非常清楚了,我就不再赘述。前序:9 2 3 1 7 5 4 6 8中序:3 1 2 7 9 4 5 8 6后序:1 3 7 2 4 8 6 5 9层次:9 2 5 3 7 4 6 1 8可以观察出,前序的第一个元素(后序的最后一个元素)9可在中序中划分出左右子树,在左右子树中可以如法炮制,直到叶结原创 2022-03-26 21:37:37 · 1922 阅读 · 0 评论 -
单调队列入门
追忆似水年华,一道有n多种解法的题目一直叩着心门——P1115 最大子段和贪心、分治、动态规划各显神通QAQ。我们从这道题看起,其中一种做法:让左端点对应的前缀和尽可能小,让右端点对应的前缀和尽可能大,这样算出来这段区间的总和就会尽可能大。我们枚举每一个右端点,在枚举的同时保存下在它之前的最小前缀和,即可在O(n)O(n)O(n)的复杂度下求出答案。#include<bits/stdc++.h> using namespace std;int a[300050],pre[300050]原创 2022-03-16 20:51:30 · 529 阅读 · 2 评论 -
栈的应用(进出栈序列&&表达式计算&&单调栈)
文章目录进出栈序列问题火车进栈火车进出栈问题表达式计算[P1449 后缀表达式](https://www.luogu.com.cn/problem/P1449)[P1175 表达式的转换](https://www.luogu.com.cn/problem/P1175)单调栈[P5788 【模板】单调栈](https://www.luogu.com.cn/problem/P5788)[SP1805 HISTOGRA - Largest Rectangle in a Histogram](https://www原创 2022-03-12 21:27:10 · 977 阅读 · 1 评论