需要创建三个数组,一个fa[i] 记录i的父亲,也就是栈的底部,一个sum[i]记录每个栈中箱子的个数(主要是记录根节点的),还有一个under[i] 用于记录当前编号i的下方有多少个箱子 初始化操作 for( int i = 0 ; i <= n ; i ++) {fa[i] = i ; sum[i] = 1; under[i] = 0; } merge操作 假...
高级:用数组s存储当前节点x的子结点数量,用数组d存储当前节点到根节点的距离,所求值即s[find(x)]-d[x],(也许你会说要求的不就是s[x]吗,道理是这样,但我们并没有求出每个节点的子结点数量) 续上高级:按照一般并查集的合并方法,令pre[find(y)]=find(x);那合并后会有: d[find(y)]=s[find(x)]+1...
方块栈(POJ 1988) #include<iostream>#include<string>#include<queue>#include<vector>#include<algorithm>#include<math.h>#include<functional>#include#define INF 10000//正无穷usingnamespacestd;constintmaxn=100010;intparent[maxn];intd[maxn];//编号[i]下的所有方块数量intcnt[maxn];intn;classSet{p...
#include <cstring> const int N = 300010; int n; int StackNum[N], f[N], d[N]; void init() { for (int i = 1; i <= n; i++) { f[i] = i; d[i] = 0; StackNum[i] = 1; } } int find(int x) { if (x == f[x]) return x; int t = find(f[x]); d[x] ...
题目链接:POJ 1988 Cube Stacking 并查集的题目 【题目大意】 有n个元素,開始每一个元素自己 一栈。有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。 另外一种操作是询问含有x元素以下有多少个元素。 用sum数组储存每一个栈中的元素个数。每次合并的时候将sum加到 父亲节点。也就是每一个栈的...
poj 1988 Cube Stacking(带权并查集) 题目链接:poj 1988 Cube Stacking 题目大意:给出n,表示有n个立方体,p次操作(p未给出)操作分两种,M a b 将a所在列的正方体整个移动至b所在的立方体上面,C a 计算在a下面有几个立方体。 解题思路:带权并查集,根为最底下的立方体,权值代表当前立方体下面有几个,然后在一...
const char inf[]="POJ1988.in";const char ouf[]="POJ1988.out";const long maxn=30000;long P;long root[maxn+10];long count[maxn+10];long top[maxn+10];void prepare(){ long i;for(i=1;i<=maxn;i++){ root[i]=0;count[i]=0;top[i]=i;} } long find(long x,...
【摘要】 题目链接~~> 做题感悟:这题开始被吓到了,一看是多校练习赛,在 HDU 提交了 n 次都是栈溢出,但是在 POJ 1 A.(哪位大牛路过麻烦看一下挫代码为什么在POJ上可以过在HDU上过不了)真无语!! 解题思路:方法一、先说我的思路吧: 题意中 M x y 是把 y 接到 x的下面,最后求 x下面有多少个木块...
公司介绍上海联洪环保科技有限公司主要销售BIOCLIMATIC化学过滤器,由于我们对国内环境现状的充分了解及拥有的长期的服务经验,我们知道如何快速、高效的解决环境问题,同时经过多年的技术积累,我们的服务遍布整个环境领域,是目前国内专业的环境技术与服务供应商。美国Bioclimatic的系列设备主要用于各化工厂区、数据中心、教室、博...
可信度有待先生证实,小伙伴们可以当一种占卜法门来看,以资娱乐 很多人想知道自已前世今生从哪里来,死后灵魂归于何处。《达摩一掌经》是佛教秘不外传的轮回论命大法!它能算三世因果,及死后归属。同时它还可以用来论命,定人生富贵贫贱夭亡。有奇验。所论命之法与传统四柱方法不同,《达摩一掌经》是以12生肖来定...