![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Hoyoak
一位蒟蒻
展开
-
OI学习笔记之数据结构——带权并查集
带权并查集是一种并查集的操作,其功能与基础并查集相同,支持查询和合并操作。除此之外,带权并查集还维护了子节点与父节点之间的关系,在一个有序的集合中,某个元素到根节点的距离(例:NOI2002银河英雄传说),其操作是除了维护节点关系数组f以外,还维护了多个能表示元素之间关系的数组如value等带权并查集的基本操作1——merge//比如要维护有序队列中某个点离祖宗的距离inline void ...原创 2019-07-28 23:48:20 · 152 阅读 · 0 评论 -
P1196 [NOI2002] 银河英雄传说题解
跳转了解题意这是一道带权并查集的入门题目,权即是关系,这个题的权是该节点距离特征性元素的距离,以及以x为开始的集合的元素个数如不了解带权并查集,建议先学习一下再做AC代码:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<...原创 2019-07-28 19:24:03 · 302 阅读 · 0 评论 -
[JSOI2008] P1197 星球大战题解
点击了解题意显然这是一道并查集判联通块的题目,并查集的作用是合并和查询,题目中要求输出炸毁某个点后连通块的个数,但并查集貌似不支持拆分操作 ,可能是我不会,所以我们可以期初先把所有点先摧毁,看看有多少联通块,然后倒着来做,从摧毁的最后一个点开始修建,看看每修建一个点,能减少多少个联通块,每修建一个点记录一下答案,最后正序输出即可。AC代码#include<cstdio>#inc...原创 2019-07-28 15:25:47 · 145 阅读 · 0 评论 -
洛谷P1551亲戚题解
这是一道并查集的板子题,其中给定族谱对应的是并查集的merge操作,查询x,y是否是亲戚对应的是并查集的查询操作附AC代码#include<cstdio>#include<iostream>using namespace std;int f[5005],n,m,k;int find(int a){ if(f[a]==a) return f[a]; r...原创 2019-07-28 00:20:07 · 260 阅读 · 0 评论 -
OI学习笔记之数据结构——基础并查集
并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。一,对并查集的认识并查集是树形结构,常常在题目中用来判断两个元素是否属于同一个集合,每个集合都有一个特征性元素称为这个集合的father,如果两个元素的father相同,则说明这两个元素属于同一集合,若这两个元素的father不相同,则说明这两个元素不属于一个集合。并查集就是这样一种支持合并和查询的树...原创 2019-07-27 23:51:53 · 264 阅读 · 0 评论 -
OI学习笔记之数据结构——树状数组
树状数组复杂度 O(logn).树状数组是一种维护前缀和,区间最大值,区间最小值,区间异或和等满足交换律的东西的数据结构,其支持单点修改和区间查询。树状数组其实并不算一棵树,它是由数组+二进制的操作实现的,只是在实现的过程中我们借助了树形结构的思想,因此树状数组并不需要建树等操作。一,认识树状数组树状数组也是一棵二叉树,长相类似于一棵偏沉的线段树,其中最下面一排数组a代表给定的序列a1,...原创 2019-07-27 20:00:55 · 413 阅读 · 0 评论 -
洛谷P2251质量检测题解
点击跳转查看题意由题意显而易见可得,这是一道RMQ的裸题,ST表的建表复杂度为O(nlogn),查询为O(1),能完美跑过此题的数据结构,这题的题意是查询以每个数为起点长度为m的区间内部的最小值,我们只需要枚举一下起点,每个区间依次查询就好,这题是一道ST表的裸题#include<cstdio>//100#include<iostream>#include<c...原创 2019-07-27 16:29:31 · 170 阅读 · 0 评论 -
OI学习笔记之数据结构——ST表
ST表是用于解决RMQ问题的一种数据结构(RMQ:询问某个区间内的最大值或最小值),其主要运用的是倍增和动态规划的思想。ST表复杂度:预处理O(nlogn) 查询 O(1)一,ST表的认识ST表的实现,我们用一个二维数组st[i][j]来建立ST表,其中st[i][j]表示的是,从第i个数开始往后2^j个数中的最大值或者最小值。二,建立ST表在建立ST表的过程中,我们主要运用了动态规划,...原创 2019-07-27 15:48:49 · 552 阅读 · 0 评论 -
[BOI2003] P1892 团伙题解
依然是扩展域并查集,思路与食物链完全相同,略简单于食物链了解题意抓住要点我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。迎刃而解AC代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxn 1005using n...原创 2019-07-30 20:53:46 · 203 阅读 · 0 评论 -
[NOI2001] P2024 食物链题解
苦涩地写这片题解…,这道题我做了五个小时,原因竟是,我把题干中最重要的一句话当成了废话555。点击跳转了解题意题目背景中写道“动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B吃 C,C 吃 A。”我开始只以为这是一句…无关紧要的话,后来一直30分才发现,动物王国真的只有三种动物。这道题依然是有两种做法带权并查集和扩展域并查集,显然我只会扩展域并查集,我...原创 2019-07-30 20:18:26 · 240 阅读 · 0 评论 -
[NOIP2010] P1525关押罪犯题解
点击跳转了解题意这是一道进阶的并查集的题目,其做法有两种,第一种是带权并查集,新开一个数组维护每个节点和根节点的关系,但由于博主太菜,这个做法研究了一下午也没有搞懂,所以就采用了我认为更好理解一点的扩展域并查集,这道题中要求输出的最大冲突值最小,所以贪心的来做,我们先按冲突值从大到小排一个序,尽量不让冲突值大的事件发生,题目中说共有两个监狱,有m对罪犯之间有冲突,只要这两个罪犯关在了同一间监狱里...原创 2019-07-30 15:26:14 · 143 阅读 · 0 评论 -
OI学习笔记之数据结构——扩展域并查集
扩展域并查集与普通的并查集区别在于扩展域并查集开到x*n用于维护x对关系具体详见P1525关押罪犯题解原创 2019-07-30 15:12:14 · 178 阅读 · 0 评论 -
OI学习笔记之倍增求LCA
倍增求LCA一,首先回顾一下什么是倍增算法,倍增算法就是改善一下一步一步跳的缓慢,改为跳2^k 步从而达到加快速度的目的,倍增算法一般要先预处理一个数组,代表从从某个点开始跳2^k 个数到达哪里,比如ST表的ST[i][j]代表从第i个数向后2^j 个数,树上倍增求LCA的f[i][j]表示i的第2^j 个祖先是谁。二,最近公共祖先LCA概念篇1,祖先:与x处于同一条重链且深度小于点x的...原创 2019-08-11 06:25:50 · 298 阅读 · 0 评论