P1196 [NOI2002]银河英雄传说 题目大意: 给你一个序列,支持两种操作: 合并指令为$M_{i,j}$j​,含义为第i号战舰所在的整个战舰队列,作为一个整体(头在前尾在后)接至第j号战舰所在的战舰队列的尾部. $C_{i,j}$​该指令意思是,询问电脑,杨威利的第ii号战舰与第jj号战舰当前是否在同一列中,如果在同一列中,那么它们之间布置有多少战舰. 据说是带权并查集,其实就是多维护了几个变量而已, fa[x]依旧表示x的父亲,front[x]表示x与x队头之间的距离,num[x]表…
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iomanip> #include<iostream> #include<algorithm> using namespace std; ; int n,fa[N],dis[N],cnt[N]; inline int read() { ;bool flag=false;…
题意简述 有30000列,每列都有一艘战舰,编号1~30000 有2种操作: 1.将一列的战舰运到另一列 2.询问两个战舰是否在同一列,如果是,求出它们之间的距离 题解思路 并查集, 维护每个点x离自己祖先的距离dis[x],和该点所在集合的大小size[x] 每次查找时更新即可, 点x,y之间距离为abs(dis[x] - dis[y]) - 1 代码 #include <iostream> using namespace std; int T, x, y, xx, yy; int fa[3…
有特殊意义的一道题-- 加权并查集,我们增加cnt.deep数组 分别表示i点所在链共有多少个点,以及路径压缩之前点i在链中的深度 每次合并时直接修改cnt,路径压缩的同时更新deep 因为每次查询之前都要find,所以查询节点x的deep也就在找father时更新了 (deep数组初始化为零比较方便) #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ],deep…
由于并查集让我很自闭(其实是我太弱了),所以学习了加权并查集,这是例题: 题目链接:P1196 [NOI2002]银河英雄传说 不是很简单,但对于大佬还是签到题. 合并与路径压缩时直接维护\(dis[],num[]\),就好了,不过为什么要引进\(num[]\)呢? 真无奈. 不过++此题就很简单了,注意\(getf()\)有两句不要写反,否则就\(10\;pts\)了.一会代码里有标注. 复杂度是\(O(n\alpha(n))\)(其实我也不知道是这个吗,差不多就行了) \(Code\): #…
题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶集团派宇宙舰队司令莱因哈特率领十万余艘战舰出征,气吞山河集团点名将杨威利组织麾下三万艘战舰迎敌. 杨威利擅长排兵布阵,巧妙运用各种战术屡次以少胜多,难免恣生骄气.在这次决战中,他将巴米利恩星域战场划分成30000列,每列依次编号为1, 2, …,30000.之后,他把自己的战舰也依次编号为1, 2,…
题目链接:https://www.luogu.org/problemnew/show/P1196 题意: 有30000个战舰队列,编号1...30000. 有30000艘战舰,编号1...30000,初始时第i艘战舰在第i个战舰队列中. 然后t个操作: (1)M i j:将战舰i所在的队列整体接到战舰j所在队列的尾部. (2)C i j:询问战舰i,j之间有多少艘战舰.若i,j不在同一队列中,输出-1. 题解: dis[i]表示战舰i与par[i]之间的距离. siz[i]表示战舰i所在队列的大…
一年没写博客了(滑稽). 这道题很玄学,导致自己都有一个坑人的问题求解.如果有大佬有能力求帮助:https://www.luogu.org/discuss/show?postid=30231 再来讲一下我对这道题的理解吧. 首先,对于判断两个数是否在同一列战舰中,我们只需要朴素的并查集就可以. 但这道题还要求我们去搞一个两船之间的距离(这就很难办了),所以只能使用带权并查集. 我们开一个数组front[],来表示第i号战舰到i所在的战舰的队头的距离.这样如果两个战舰在同一列中,他们的距离就是ab…
花了2h总算把边带权并查集整明白了qaq 1.边带权并查集的用途 众所周知,并查集擅长维护与可传递关系有关的信息.然而我们有时会发现并查集所维护的信息不够用,这时"边带权并查集"就应运而生了. 2.例题与思路 这里通过例题 洛谷P1196 [NOI2002] 银河英雄传说 来介绍边带权并查集的思想.题面请点击链接查看. 2.1.暴力 拿到这道题我的第一想法就是用链表模拟.对于两艘在同一列的战舰,只需知道它们到队首的距离(设距离分别为 \(dis_1\) 和 \(dis_2\))就可以知…
P1196 银河英雄传说 367通过 1.1K提交 题目提供者该用户不存在 标签并查集NOI系列2001(或之前) 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 莱因哈特什么鬼? 私人代码备份,请勿复制 话说时间... 题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压 顶集团派宇宙舰队司令莱因哈特率领十万余艘战舰出征,气吞山河集团点…