题目传送门

分析

可以看到,题目中涉及到很多合并查询操作,所以我们可以用并查集来维护每列的信息。

不过这题需要而外维护两个数组 disidis_idisi​ 和 sizisiz_isizi​,分别表示距离序列头部的距离和以 iii 做头的序列长度。

合并时需要更新 sizsizsiz 和 disdisdis。

查询 iii 和 jjj 之间的飞船个数就是 ∣disi−disj∣−1|dis_i-dis_j|-1∣disi​−disj​∣−1。

代码

#include <bits/stdc++.h>
using namespace std;
int t;
int fa[30005];
int dis[30005];
int siz[30005];
int find(int x){if(fa[x]==x)return x;int f=find(fa[x]);dis[x]+=dis[fa[x]];return fa[x]=f;
}
void merge(int i,int j){int x=find(i),y=find(j);if(x!=y){dis[x]+=siz[y];fa[x]=y;siz[y]+=siz[x];siz[x]=0;}
}int main(){cin>>t;for(int i=1;i<=30000;i++)fa[i]=i,dis[i]=0,siz[i]=1;while(t--){char ch;int i,j;cin>>ch>>i>>j;if(ch=='M'){merge(i,j);}else{if(find(i)!=find(j))cout<<-1<<endl;else cout<<abs(dis[i]-dis[j])-1<<endl;}}system("pause");return 0;
}

P1196 [NOI2002] 银河英雄传说 题解相关推荐

  1. P1196 [NOI2002] 银河英雄传说(带边权并查集)

    P1196 [NOI2002] 银河英雄传说https://www.luogu.com.cn/problem/P1196 #include <iostream> #include < ...

  2. 洛谷 P1196 [NOI2002]银河英雄传说 带权并查集

    https://www.luogu.org/problem/P1196 题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展 ...

  3. P1196 [NOI2002] 银河英雄传说 (并查集 合并

    添加链接描述 #include<bits/stdc++.h> using namespace std; const int N=5e5+9; int fa[N],sum[N],front[ ...

  4. 题解 洛谷P1196 【[NOI2002]银河英雄传说】

    题意 有一个划分成n列的星际战场,各列编号为1,2.....n.有n艘战舰,也依次编号1,2.....n,其中第i号战舰位于第i列. 有m条指令,每条指令格式如下 M i j 表示让第i号战舰所在列的 ...

  5. [NOI2002] 银河英雄传说(带权并查集好题)

    题解: 用两个变量来维护: 1.sz[i]维护第i列元素的个数 2.pre[x]维护第x元素到当前队首的距离. 在并查集是不断维护这两个值. 至于如何维护看下图和文字解释 当然,这样维护还是不够的,对 ...

  6. NOI2002银河英雄传说——带权并查集

    题目:https://www.luogu.org/problemnew/show/P1196 关键点在于存下每个点的位置. 自己糊涂的地方:位置是相对于谁的位置? 因为每次给一个原来是fa的点赋位置时 ...

  7. 并查集:P1196 [NOI2002] 银河英雄传说

    传送门 带权并查集最棒了 dep记录深度,size记录集合大小 转移见代码 #include<cstdio> #include<algorithm> #include<i ...

  8. 2019.2-2019.3 TO-DO LIST

    DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...

  9. YZOI 队员论文精选

    珂学的小萌新 题解 P1196 [NOI2002] 银河英雄传说 各种提高+的题目题解(包括省选题),看得懂的大佬自行移步前往,可以照单刷题 Akito_zhima 乘法逆元模板 Tarjan缩点+拓 ...

  10. 学习笔记——拓展域并查集和带权并查集

    1,拓展域并查集 一般的并查集只能查找出各元素之间是否存在某一种相同的联系,如:a和b是亲戚关系,b和c是亲戚关系,这时就可以查找出a和c也存在亲戚关系.但如果存在多种相对的联系时一般的并查集就不行了 ...

最新文章

  1. 开源项目kcws代码分析--基于深度学习的分词技术
  2. 谈谈数据库中MyISAM与InnoDB区别
  3. linux 下基于jrtplib库的实时传送实现
  4. 简单阻容降压电路图_X2安规电容用于阻容降压容量衰减原因及对策
  5. 跨站请求伪造攻击(CSRF)
  6. javascript设计模式--javascript的数据类型
  7. Go标准库os/exec使用指南
  8. zemax光学设计超级学习手册_穿越十年的一个ZEMAX光学设计案例
  9. oracle获取上年年初,【Oracle】TRUNC:获取去年年初和年末,获取月初和月末;
  10. 【Python】Python中的引用和赋值
  11. webpack打包优化之外部扩展externals的实际应用
  12. hdu4045(递推)
  13. 如何一步步学习到精通JavaScript
  14. 为什么要放弃 JSP ?
  15. 你该不会不知道,web自动化测试中的八大定位方法吧!
  16. python题目58:工厂流水线调度
  17. python打开txt文件以gbk,python中txt文件的编码转换问题utf-8转gbk
  18. MacBook使用与应用推荐
  19. 用户画像标签维度_用户画像详解:关于用户画像的What、Why、How
  20. 岭回归与lasso回归算法

热门文章

  1. 编译原理 CS-143(更新至week4)
  2. y是x的平方的反比例函数_反比例函数的图像和性质 x不能为0y也不能为0所以反...
  3. Amigo---Android hotfix terminator
  4. Task-conditioned Domain Adaptation for Pedestrian Detection in Thermal Imagery(多光谱行人检测)
  5. emi滤波matlab,EMI电源滤波器选型方法 浅析EMI电源滤波器及其原理介绍
  6. 制造业数字化转型的意义是什么?
  7. 计算机电源故障引起火灾,计算机硬件的常见故障及维护方法
  8. 分别求数组中奇数和偶数的和
  9. gitlab修改服务器地址,GitLab服务器IP地址设置
  10. 安全模型和业务安全体系