题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4298 题面: 给定d张无向图,每张图都有n个点.一开始,在任何一张图中都没有任何边.接下来有m次操作,每次操作会给出a,b,k,意为在第k张图中的点a和点b之间添加一条无向边.你需要在每次操作之后输出有序数对(a,b)的个数,使得1<=a,b<=n,且a点和b点在d张图中都连通. 第一行包含三个正整数d,n,m(1<=d<=200,1<=n<=5000,1<…
题目链接 \(Description\) 给定\(d\)张无向图,每张图都有\(n\)个点.一开始,在任何一张图中都没有任何边. 接下来有\(m\)次操作,每次操作会给出\(a,b,k\),意为在第\(k\)张图中的点\(a\)和点\(b\)之间添加一条无向边. 你需要在每次操作之后输出有序数对\((a,b)\)的个数,满足\(1\leq a,b\leq n\),且\(a\)点和\(b\)点在\(d\)张图中都连通. \(d\leq 200,n\leq 5000,m\leq 1000000\)…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定d张无向图,每张图都有n个点.一开始,在任何一张图中都没有任何边.接下来有m次操作,每次操作会给出a,b,k,意为在第k张图中的点a和点b之间添加一条无向边.你需要在每次操作之后输出有序数对(a,b)的个数,使得1<=a,b<=n,且a点和b点在d张图中都连通. Input 第一行包含三个正整数d,n,m(1<=d<=200,1<=n&l…
2733: [HNOI2012]永无乡 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=2733 Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛.如果从岛 a 出发经过若干座(含 0 座…
把相同颜色的串成一个链表, 然后每次A操作就启发式合并, 然后计算对答案的影响. ------------------------------------------------------------------------ #include<cstdio> #include<algorithm> #include<cstring>   using namespace std;   const int maxn = 1000009;   int N, M, ans,…
3123: [Sdoi2013]森林 题意:一个森林,加边,询问路径上k小值.保证任意时刻是森林 LCT没法搞,树上kth肯定要用树上主席树 加边?启发式合并就好了,小的树dfs重建一下 注意 测试点编号不是数据组数!!! 加边的时候要更新邻接链表啊,并且fa要清空 并查集维护size一定初始化1 好了现在我要填报名表了 #include <iostream> #include <cstdio> #include <cstring> #include <algor…
Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色. 例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. Input 第一行给出N,M表示布丁的个数和好友的操作次数.  第二行N个数A1,A2...An表示第i个布丁的颜色从第三行起有M行, 对于每个操作, 若第一个数字是1表示要对颜色进行改变,其后的两个整数X,Y表示将所有颜色为X的变为Y,X可能等于Y.  若第一个数字为2表示要进行询问当前有多少段颜色,这时你应…
Description 1: 查询一个集合内的K大值 2: 合并两个集合 Solution 启发式合并主席树板子 Code #include<cstdio> #include<cstring> #include<algorithm> #define rd read() #define rep(i,a,b) for(register int i = (a); i <= (b); ++i) #define per(i,a,b) for(register int i =…
首先我们对于一颗树,要选取最多的节点使得代价和不超过m,那么我们可以对于每一个节点维护一个平衡树,平衡树维护代价以及代价的和,那么我们可以在logn的时间内求出这个子树最多选取的节点数,然后对于一个节点的平衡树我们可以由他的子节点启发式合并而来,时间复杂度nlog^2n. 这道题还可以用左偏树来解决,左偏树为一种可合并堆,合并,删除,插入都在logn内完成,那么这道题的时间复杂度还可以nlogn. 反思:我写的是左偏树的,手残把value打成cost了= =,查了半天. /***********…
我不会告诉你这是线段树合并的好题的... 好吧我们可以搞一个multiset在dfs时求出LIS(自带二分+排序)进行启发式合并,轻松加愉悦... #include<cstdio> #include<iostream> #include<set> ; #define R register int using namespace std; inline int g() { R ret=; register char ch; while(!isdigit(ch=getcha…