![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
高级数据结构(并查集、线段树)
高级数据结构
曼切斯特的流氓
007
展开
-
网络分析(路径压缩并查集)
路径压缩时,必须更新每个子节点的权值,先将根节点暂存到p,然后用原来的父亲节点更新d,最后在将父亲节点设为p,这样从上到下,递归下来可以保证权值正确。当两个链进行合并时,其中一个链的根节点d(i)必须减去另外一个链根节点的权值d(j)这样保证i号链不会多加上j号链的权值。d数组记录每个节点的权值,最后输出时只要将当前节点所有的父亲节点的权值和加上自身节点输出,就是该节点的答案。原创 2023-04-03 16:58:17 · 43 阅读 · 0 评论 -
线段树+懒标记处理区间问题
线段树原创 2022-06-02 23:53:47 · 109 阅读 · 0 评论 -
线段树懒标记
模板题目区间更改查询区间和#include <bits/stdc++.h>#define ll long long#define pr pair<double,int>using namespace std;const int maxn=1e5+10;int ans,m,n,p;int a[maxn];struct node{ int l,r; ll sum,add;//add为懒标记} tr[4*maxn];void pushup(in原创 2022-05-30 23:30:50 · 261 阅读 · 0 评论 -
区间线段公约数(线段树+差分)
题目连接#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn=5e5+10;int m,n,ans,p;ll w[maxn];struct node{ int l,r; ll sum,d;} tr[maxn*4];ll gcb(ll x,ll y){ return y?gcb(y,x%y):x;}void pushup(node &am原创 2022-05-22 21:51:15 · 85 阅读 · 0 评论 -
线段树处理最大连续子段和问题
题目描述#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn=5e5+10;int m,n,ans,p;int w[maxn];struct node{ int l,r; int sum,lmax,rmax,tmax;} tr[maxn*4];//重写pushup函数void pushup(node &u,node &l,node &原创 2022-05-16 22:05:37 · 165 阅读 · 0 评论 -
线段树(常用操作)
模板题目#include <bits/stdc++.h>#define ll long long#define pr pair<double,int>using namespace std;const int maxn=2e5+10;int ans,m,n,p;struct node{ int l,r; int v;//区间[l,r]最大值} tr[maxn*4]; //由于第1层到第n-1层满二叉树有2n-1个结点(第n-1层n个结点),原创 2022-05-09 14:08:16 · 176 阅读 · 0 评论 -
P2024洛谷-食物链(详细解答)
题目:动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是2 X Y,表示 X 吃 Y 。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。当一句话满足下列三条之一时原创 2021-03-11 22:05:52 · 542 阅读 · 0 评论 -
P1196(洛谷)银河英雄传说(详细解答)
题目:银河英雄传说题意解释:起始有3w艘战舰,每条战舰独自成一列,共3w列,输入Mij指令将第i号战舰所在的整列放到j号战舰后,Cij查询i号战舰和j号战舰中间有多少战舰,若ij不在同一列返回-1。(每个战舰看成一个结点)解题思路:fa[]数组存放每个点的父亲节点value[]数组存放该点到头结点之间共有多少结点(不包括该点)tot[]数组存放整列共有多少结点,放在头结点位置使用带权并查集,边权存该结点到头结点(包括头结点,但不包括该点),一共有多少结点,同时头结点存放整列共有多少结点。原创 2021-03-13 15:34:27 · 414 阅读 · 0 评论 -
How Many Answers Are Wrong(带权并查集)
题目题目解释:给定n个数,m个数据对,数据对中有abc a代表起始数字,b代表终止数字,c代表权值,可以理解为a到b的距离我们要在给出的m个数据对中,找出自相矛盾的数据对,统计一共有多少对错误。举例说明为了方便后边,我们把右边的闭区间改为开[a,b+1)n=10,m=5(数字1~10,5个数据对)1 10 1007 10 281 3 324 6 416 6 1[1,11)距离为100[7,11)距离为28[1,4)距离为32[4,7)距离为41[6,7)距离为1输出原创 2021-03-12 16:40:33 · 162 阅读 · 0 评论