随笔分类 - 图论——并查集
摘要:【传送门:BZOJ3296】 简要题意: 给出n头牛,共有m种语言,每头牛会ki种语言,会相同语言的牛可以交流,A牛和B牛可以交流当且仅当它们能够通过和其他牛交流来互相交流 但是有些牛仍然不能互相交流,所以可以让某些牛学习一种或多种语言,让牛学习一种语言就必须买这个语言的书 求出能使得所有牛能相互交
阅读全文
摘要:【传送门:BZOJ4690】 简要题意: 有n个物品,m个操作,两种操作: ! a b w表示第a个物品比第b个物品重量轻w ? a b求出a比b轻多少,如果无法求出答案则输出UNKNOWN 题解: 带权并查集,对于!操作,默认编号小的在前面,如果要交换则w=-w 然后直接做就好了 参考代码:
阅读全文
摘要:【传送门:BZOJ2733】 简要题意: 有n个点,每个点都有点权,m条边,给出q个操作,两种操作: B x y将x连向y Q x k求出所有与x相连通(包括x)的点中第k小的点的编号 题解: 主席树+并查集 将所有连通的点都并在一起,然后每次并查集合并的时候,合并能够代表这两个连通块的两棵主席树
阅读全文
摘要:【传送门:BZOJ1529】 简要题意: 给出n个储钱罐,给出每个储钱罐的钥匙在哪一个储钱罐里,可以选择用钥匙或者直接砸开储钱罐从而拿到钱,求出最少砸开多少个储钱罐能够将所有储钱罐里的钱 题解: 并查集 原本想用强联通,结果MLE 如果第i个储钱罐的钥匙在第j个储钱罐里,则j连向i 显然对于一个环,
阅读全文
摘要:【传送门:BZOJ3562】 简要题意: 给出n个点,m条初始无向边,有3种操作,q个操作: A x y连接x和y D x y删除x和y的边 Q 求出有多少个连通块 题解: 并查集+DFS 因为询问很少,但是边很多,所以我们先离线将不会被删除的边拿出来,然后将永远连在一起的点缩点 这样子这个图就会变
阅读全文
摘要:【传送门:BZOJ4195】 简要题意: 有T组数据,每组数据有n个约束条件i,j,e,如果e=1,说明a[i]=a[j],如果e=1,说明a[i]!=a[j] 如果这组数据的约束条件有矛盾,则输出NO,不然输出YES 题解: 肯定要先离散化,不然i,j太大了 然后先把所有相等的条件进行,用并查集维
阅读全文
摘要:【传送门:BZOJ3376】 简要题意: 约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种: 1.移动(M):将包含X的立方柱移动到包含Y的立方柱上. 2.统计(C):统
阅读全文
摘要:【传送门:BZOJ1202】 简要题意: 给出T组数据,每组数据有n个点,每个点都有值,给出m个区间和,判断是否所有区间和都合法 题解: 乍一眼,就是前缀和的处理,但并没有想到做法,后来发现并查集维护前缀和好像行得通,而且网上的神犇们都用并查集,而且似乎叫做带权并查集 注意当求i点祖先时,要记得对v
阅读全文