题目大意:
 
给你一堆积木,排成一行,初始时每对积木都只有一个,支持两种操作

 第一种是移动操作,格式为“移动X到Y的上面”。X和Y代表两块积木的编号,意思是将X所的那堆积木,整体叠放到Y所在的那堆积木之上;“M”

 第二种是统计操作,格式为“统计Z下方的积木数量”。Z代表一块积木的编号,意思是贝西需要报告在编号为Z的积木之下还有多少块积木;“C”

显然的带权并查集,其实是多维护了两个变量,注意查询时一定要先更新,防止查询时未被更新而出错

#include<bits/stdc++.h>

#define N 300000
using namespace std; int n,fa[N],front[N],num[N];

//num表示以x为底的上面的集合中元素数量
//front就是x距低端的元素数量
int find(int x){
if(x==fa[x]) return x;
int f=find(fa[x]);
front[x]+=front[fa[x]];
return fa[x]=f;
} int main()
{
scanf("%d",&n);
for(int i=;i<N;i++) fa[i]=i,num[i]=;
for(int x,y,z,i=;i<=n;i++){
char a;
cin>>a;
if(a=='M'){
scanf("%d%d",&x,&y);
int fx=find(x),fy=find(y);
fa[fx]=fy;//更新父节点
front[fx]+=num[fy];//更新儿子的front
num[fy]+=num[fx];//更新父亲的num
num[fx]=;//将儿子的num归0
}
else {
scanf("%d",&z);
x=find(z);//一定要先查询在输出
printf("%d\n",front[z]);
}
}
return ;
}

相同题目见:https://www.cnblogs.com/song-/p/9620959.html

洛谷——P2342 叠积木的更多相关文章

  1. 洛谷 P2342 叠积木 题解

    本蒟蒻又来发题解了 这题是不是有点像并查集,但是那个询问的个数是不是有点骚: 所以,普通的并查集是无法解决这个问题的,这个时候就需要用到带权并查集了: 每次跑的时候都记录下它的下面有几个点,然后询问的 ...

  2. P2342 叠积木

    P2342 叠积木 17通过 66提交 题目提供者wwqk4444 标签树状数组线段树USACO 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 Cube Stacki ...

  3. 【洛谷P1969】积木大赛

    递增区间内累计增量 #include<cstdio> #include<cstring> using namespace std; int a,h,n,ans; int mai ...

  4. 洛谷P2342-叠积木

    Problem 洛谷P2342-叠积木 Accept: 373   Submit: 1.1k Time Limit: 1000 mSec    Memory Limit : 128MB Problem ...

  5. 洛谷OJ P1196 银河英雄传说(带权并查集)

    题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...

  6. 洛谷 P5019 铺设道路

    题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度 ...

  7. 洛谷P2054 [AHOI2005]洗牌(扩展欧几里德)

    洛谷题目传送门 来个正常的有证明的题解 我们不好来表示某时刻某一个位置是哪一张牌,但我们可以表示某时刻某一张牌在哪个位置. 设数列\(\{a_{i_j}\}\)表示\(i\)号牌经过\(j\)次洗牌后 ...

  8. 洛谷 P2054 [AHOI2005]洗牌

    题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打 ...

  9. 洛谷P3688/uoj#291. [ZJOI2017]树状数组

    传送门(uoj) 传送门(洛谷) 这里是题解以及我的卡常数历程 话说后面那几组数据莫不是lxl出的这么毒 首先不难发现这个东西把查询前缀和变成了查询后缀和,结果就是查了\([l-1,r-1]\)的区间 ...

随机推荐

  1. smart pointer

    smart pointer是一种abstract data type,它可以模仿指针的行为,而且额外提供了一系列诸如自己主动内存管理.边界检查等特性,这些特性是为了在保证效率的基础上降低因为对指针的不 ...

  2. Cocos2d-x v3.0正式版尝鲜体验【2】 Android平台移植

    今天没事又尝试了下3.0正式版关于Android平台的移植,把新建的项目移植了下.过程仅用了十分钟左右,什么概念?! 好吧,事实上我想说,这个版本号真的移植非常轻松啊,只是还没加上其它东西,只是就眼下 ...

  3. ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身

    设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用 ...

  4. jsp注释前台不可见

    <%-- <div class="content"></div> --%>

  5. 【POJ 1845】 Sumdiv

    [题目链接] 点击打开链接 [算法] 不妨先将A分解质因数 A = p1^q1p2^p2p3^p3..pn^qn 那么,A^B = p1^q1Bp2^q2B...pn^qnB 根据约数和定理,A^B的 ...

  6. Python的包管理工具easy_install, setuptools, pip,distribute介绍

    1.相互之间的关联 easy_install, setuptools, pip,distribute,这几个工具的联系,如下图: 可以看到distribute是setuptools的取代,pip是ea ...

  7. js产生随机数教程

    <script>   function GetRandomNum(Min,Max){   var Range = Max - Min;   var Rand = Math.random() ...

  8. js判断出两个字符串最大子串的函数

    <!DOCTYPE html><html><head> <title></title></head><script typ ...

  9. [App Store Connect帮助]二、 添加、编辑和删除用户(6)生成 API 密钥

    如果已批准您访问 App Store Connect API,您可以生成 API 密钥,以便使用该密钥配置.认证和使用 App Store Connect 服务. 有关管理和保护您密钥的更多信息,请参 ...

  10. Akka源码分析-Remote-发消息

    上一篇博客我们介绍了remote模式下Actor的创建,其实与local的创建并没有太大区别,一般情况下还是使用LocalActorRef创建了Actor.那么发消息是否意味着也是相同的呢? 既然ac ...