摘要:给定n个结点,q次询问,每次询问分为三类: 1 x y,将x和y两个点连通,如果已经连通则不操作。 2,撤销上一次连通操作,如果全部撤销完了则不操作。 3 x y,询问x和y是否连通。 对于每个询问3,输出结果YES或NO。 提示:可销撤并查集,使用按秩合并或启发式合并,不能用路径压缩。合并时记录操
阅读全文
摘要:给定长度为N的数组A,以及M条指令,每条指令可能是以下两种之一: 1 x y,查询区间[x,y]中的最大连续子段和。 2 x y,把A[x]改成y。 对于每个询问,输出一个整数表示答案。 数据限制:N<=5e5, M<=1e5, |A[i]|<=1000。 提示:线段树,每个区间需要维护答案、前缀、
阅读全文
摘要:动物王国中有3类动物A,B,C,构成食物链:A吃B,B吃C,C吃A。现有N个动物,每个动物都是A,B,C中的一种,有K个描述: 1 X Y,表示X和Y是同类 2 X Y,表示X吃Y 当一句话满足以下条件之一时,为假话,否则为真话。 与前面的话有冲突 X或Y比N大 X吃X 输出假话总数。 提示:种类并
阅读全文
摘要:给定N名罪犯和M组仇恨关系,第i组关系用a[i],b[i],w[i]标识,表示编号为a[i]与b[i]的罪犯之间的仇恨值为w[i]。现要将所有罪犯关押在两个房间里,使得同一房间内任意两名罪犯的最大仇恨值最小,求该最小值。 提示1:排查+种类并查集。类似最小生成树的做法,按仇恨值从大到小排序,按顺序枚
阅读全文
摘要:给定N条直线、M组位置关系(平行或垂直)和Q个查询,要求输出共有多少组平行线,并回答询问的直线之间的位置关系。 提示:种类并查集。 #include <bits/stdc++.h> using i64 = long long; // DSU模板... void solve() { int N, M,
阅读全文
摘要:给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: C l r d,表示把A[l],A[l+1],...A[r]都加上d。 Q l r,表示查询A[l],A[l+1],...A[r]的最大公约数。 对于每个询问,输出一个整数表示答案。 分析:利用差分数组,将区间修改转换成两次单点修改。
阅读全文