随笔分类 -  并查集

摘要:problem给一张n个点m条边的有向图,每条边有一个正整数权值以及一种色光三原色红、绿、蓝之一的颜色。恰好选出k条边,满足只用这k条边之中的红色边和绿色边(或者蓝色边和绿色边)就能使n个点之间两两连通对于k==1…m,计算选出恰好k条满足条件的边的权值之和的最小值。... 阅读全文
posted @ 2018-08-05 17:19 gwj1139177410 阅读(173) 评论(0) 推荐(0)
摘要:problem给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒)。请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现。输出字典序最小的方案(n的规模局势所有字母随机组合的大小)solution——背景 欧拉路:能够从无向图... 阅读全文
posted @ 2018-07-28 09:52 gwj1139177410 阅读(144) 评论(0) 推荐(0)
摘要:problemsolutioncodes#includeusing namespace std;int fa[200010];int find(int x){return x==fa[x] ? x : fa[x]=find(fa[x]);}int main(){ ... 阅读全文
posted @ 2018-06-08 21:58 gwj1139177410 阅读(84) 评论(0) 推荐(0)
摘要:problem给定n个人朋友的朋友是朋友,敌人的敌人是朋友朋友之间组成一个团伙,求团伙数solution将每个点x拆成两个:x和x+n(分别表示x的朋友和敌人)如果x和y是朋友,就将x和y合并如果x和y是敌人,就将x和y+n合并,将y和x+n合并注意朋友的敌人不一定是... 阅读全文
posted @ 2018-05-31 15:28 gwj1139177410 阅读(150) 评论(0) 推荐(0)
摘要:problemsolutioncodes//并查集模板#includeusing namespace std;int fa[5010];void init(int n){for(int i = 1; i >n>>m>>p; init(n); for(int... 阅读全文
posted @ 2018-05-27 20:45 gwj1139177410 阅读(105) 评论(0) 推荐(0)
摘要:problemsolutioncodes//并查集及补集//凡是与i+n节点在同一个集合里的,都是不能与i在同一个集合里的。#include#includeusing namespace std;struct Edge{ int u, v, w; }e[100010]... 阅读全文
posted @ 2018-05-24 21:42 gwj1139177410 阅读(104) 评论(0) 推荐(0)
摘要:problem有30000条队列,初始每条队列一条战舰,编号为1-30000。给出T条指令,分为合并和询问, 1、合并指令为: M i j 含义为第i号战舰所在的整个战舰队列,作为一个整体(头在前尾在后)接至第j号战舰所在的战舰队列的尾部。 2、询问指令为: C i ... 阅读全文
posted @ 2018-05-21 21:38 gwj1139177410 阅读(124) 评论(0) 推荐(0)
摘要:并查集模板,就酱紫。#includeusing namespace std;#define mod 998244353long long ans;int fa[4000010];int find(int x){ return fa[x]==x?x:fa[x]=find... 阅读全文
posted @ 2018-04-17 13:00 gwj1139177410 阅读(130) 评论(0) 推荐(0)
摘要:problem森林中有3种动物:A吃B,B吃C,C吃A现有 N 个动物(编号1~n),K句话。 1、1 X Y,表示 X 和 Y 是同类。 2、2 X Y,表示 X 吃 Y。一句话是假话当且仅当: 1、与前面的冲突。 2、X吃X。 3、编号大于N。判断当前话的真假。s... 阅读全文
posted @ 2018-03-25 10:41 gwj1139177410 阅读(139) 评论(0) 推荐(0)

选择