银河英雄传说

并查集 +瞎搞
思路
对于合并和查询是否存在于同一集合好说
关键就是查询之间的战舰数量的问题

可以利用树上前缀和的思想来实现
用sum[i]表示i节点到根的距离
那么考虑维护
在A队接到B队的过程中 需要维护A的节点到根的距离
很显然A中所有节点的sum需要加上B中节点的个数
那就再开一个tot[i]表示i节点为根节点个数 
而且可以先不更新 在要用到A的子节点时再递归更新他们的sum值
代码

#include <cstdio>
#include <cstring>
#include <iostream>using namespace std;const int Maxn=30001;char c;
int fa[Maxn],T,a,b,sum[Maxn],tot[Maxn];
int abs(int x){return x<0?-x:x;}
int find(int x)
{if(fa[x]==x)return x;int r=find(fa[x]);sum[x]+=sum[fa[x]];//递归处理距离fa[x]=r;return r;
}int main()
{for(int i=1;i<=30000;i++){fa[i]=i;sum[i]=0;//根节点距离 tot[i]=1;//结点个数 }scanf("%d",&T);while(T--){scanf("\n%c",&c);if(c=='M'){scanf("%d%d",&a,&b);int r1=find(a);//寻找根节点 int r2=find(b);fa[r1]=r2;//相连 sum[r1]=tot[r2];//r1接到r2上 tot[r2]+=tot[r1];//r2的节点数加上r1的总节点数 }else{scanf("%d%d",&a,&b);int r1=find(a),r2=find(b);//寻找根节点 if(r1!=r2)printf("-1\n");else printf("%d\n",abs(sum[a]-sum[b])-1);//计算距离 前缀和思想 }}
}

欢迎指出Bug

End。

vijos P1443 银河英雄传说相关推荐

  1. Google的银河英雄传说

    Google的银河英雄传说 在漫长的人类发展长河中,曾经出现过一位通晓一切知识的谜之生命体,它的名字,叫做 Google . Google 博学,却并不高傲,相反, 它 总是平易近人的为所有人解难难题 ...

  2. 【题解 海量集训 并查集】 银河英雄传说

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

  3. 【并查集】银河英雄传说

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

  4. COdevs 1540 银河英雄传说

    1540 银河英雄传说 source:2002年NOI全国竞赛 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 公元五八○一年, ...

  5. 洛谷 P1196 银河英雄传说

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

  6. luogu P4847 银河英雄传说V2(FHQ - 平衡树)

    初始情况下我们有 n 颗大小为 1的平衡树,合并就正常合并,分裂就正常分裂,但我们需要注意的是合并的标记值所在的序列而非标记值所在的元素,所以一个序列的代表就是它的根节点,我们不需要记录它,记录了反而 ...

  7. [Luogu 1196] NOI2002 银河英雄传说

    [Luogu 1196] NOI2002 银河英雄传说 话说十六年前的 NOI 真简单... 我一开始还把题看错了- 题意:一群人,每个人各自成一队,每次命令让两队首位相接合成一队,每次询问问你某两个 ...

  8. P4847 银河英雄传说V2 非旋treap

    传送门 文章目录 题意: 思路: 题意: 思路: 让我们分析一下题目需要实现什么操作: (1)(1)(1)将某个序列放到某个的后面,也就是合并两个序列. (2)(2)(2)将一个序列从某处断开. (3 ...

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

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

最新文章

  1. 【Live555】live555源码详解(七):GenericMediaServer、RTSPServer、RTSPClient
  2. php 记录用户行为路径,用户行为路径分析方法
  3. javascript11-object03-extend
  4. linux shell 提示 bash: no job control in this shell
  5. linux+gpfs配置文件,GPFS for linux实施
  6. ADSL使用注意事项
  7. linux shell 脚本攻略学习11--mkdir和touch命令详解
  8. vue实例没有挂载到html上,VueJS-将数据发送到Vue实例以用于挂载()
  9. 银行it现状调研_中央银行系统行业现状调研分析及发展趋势预测报告(2019年版)...
  10. 课外知识----浏览器存储技术
  11. 简单的Postman,还能玩出花?
  12. phpcms某处逻辑问题导致getshell
  13. mysql时区问题解决方案
  14. 用友U8对账不平,对账错误简单处理方法
  15. 计算机abcd地址,IP地址ABCDE的分类说明
  16. JVM之类的加载与类加载器
  17. IOS逆向学习-越狱环境的搭建
  18. java代码对图片缩放
  19. 金山终端安全系统任意文件上传漏洞附poc(新鲜趁热)
  20. 关于Spring Bean的生命周期

热门文章

  1. 个人微信小程序可以使用微信支付的解决方法
  2. 【干货】好看小视频去水印软件使用介绍
  3. python 程序运行计时 动态_python中time库clock 使用Python,实现程序运行计时的数码管表示...
  4. Gitee| 每次 push 仍然需要输入 Gitee 用户名和密码 以及 创建和配置新仓库
  5. 计算机的云是什么意思_网络上所说的云是什么意思?能通俗一点解释吗?
  6. 便利贴--23{移动端滑动模块-改良}
  7. 肺癌新易感位点的发现及多基因遗传评分在肺癌风险预测中的应用--基于中国超大型前瞻性队列研究
  8. cubeIDE开发, UART的CubeMX及HAL库实现原理及底层分析
  9. 安装虚拟光驱时提示windows无法访问指定设备、路径或文件。可能没有权限访问该项目
  10. RK3588平台开发系列讲解(Display篇)开机视频的设置