BZOJ 2959 长跑 (LCT、并查集)】的更多相关文章

题面:BZOJ传送门 当成有向边做的发现过不去样例,改成无向边就忘了原来的思路.. 因为成环的点一定都能取到,我们把它们压成一个新点,权值为环上所有点的权值和 这样保证了图是一颗森林 每次询问转化为,取出$a$到$b$这条链,求链上所有点的权值和 这实际是一个不删边的动态维护边双的过程 可以用$LCT$维护 加入一条边$<x,y>$时,我们取出链$x,y$ 如果$x,y$原来不连通,把它们连上 否则说明$x,y$原来就联通的,连上这条边会成环,把$x,y$这条链上的点全都压成一个点,用并查集维…
真tm恶心...... Code: #include<bits/stdc++.h> #define maxn 1000000 using namespace std; void setIO(string a) { string in=a+".in",out=a+".out"; freopen(in.c_str(),"r",stdin); } struct Union { int p[maxn]; void init() { for(i…
题目描述 某校开展了同学们喜闻乐见的阳光长跑活动.为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上熙熙攘攘,摩肩接踵,盛况空前.为了让同学们更好地监督自己,学校推行了刷卡机制.学校中有n个地点,用1到n的整数表示,每个地点设有若干个刷卡机.有以下三类事件:1.修建了一条连接A地点和B地点的跑道.2.A点的刷卡机台数变为了B.3.进行了一次长跑.问一个同学从A出发,最后到达B最多可以刷卡多少次.具体的要求如下:当同学到达一个地点时…
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2959 题解 真是被这题搞得心态大崩--调了7个小时--然而并查集都能写成\(O(n^2)\)的我还能怪谁呢 显然要把每个边双连通分量缩成点,点权为边双连通分量内所有点点权和,然后答案就等于两点路径上点权和 现在需要用LCT维护,就比较麻烦 大概是一边LCT一边使用并查集分别维护连通块和边双连通分量 加边时,若两点不联通,则link, 然后在维护连通块的并查集里并起来 若两点联通但不在同…
http://www.lydsy.com/JudgeOnline/problem.php?id=2959 用两个并查集维护双联通分量的编号和合并. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue> using namespace std; ; int n,m; ]={},si…
2959: 长跑 题意:字词加入边,修改点权,询问两点间走一条路径的最大点权和.不一定是树 不是树…
题目描述 某校开展了同学们喜闻乐见的阳光长跑活动.为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上熙熙攘攘,摩肩接踵,盛况空前. 为了让同学们更好地监督自己,学校推行了刷卡机制. 学校中有n个地点,用1到n的整数表示,每个地点设有若干个刷卡机. 有以下三类事件: 1.修建了一条连接A地点和B地点的跑道. 2.A点的刷卡机台数变为了B. 3.进行了一次长跑.问一个同学从A出发,最后到达B最多可以刷卡多少次.具体的要求如下: 当同学…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2959 题解 调了半天,终于调完了. 显然题目要求是求出目前从 \(A\) 到 \(B\) 的可以经过重复的点(权值只算一次)的最长路. 考虑把无向图边双缩点以后,形成一棵树的关系.可以发现,边双内的点的点权是可以都取到的.所以边双缩点以后直接求出树上两个点之间的点权之和就可以了. 但是考虑怎么维护这个边双. 新链接一条边的时候,如果两个端点不连通,那么直接连上就可以了. 如果两个端点联通,那…
题解 动态树Link-cut tree(LCT)总结 LCT常数大得真实 没有环,就是\(lct\)裸题吧 有环,我们就可以绕环转一圈,缩点 怎么搞? 当形成环时,把所有点的值全部加到一个点上,用并查集维护加到哪个点上 判断连通性再用一个并查集 Code #include<bits/stdc++.h> #define LL long long #define RG register using namespace std; template<class T> inline void…
题目描述 在遥远的S星系中一共有N个星球,编号为1…N.其中的一些星球决定组成联盟,以方便相互间的交流.但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条太空隧道连接两个星球,使得它们能够相互到达.若两个星球属于同一个联盟,则必须存在一条环形线路经过这两个星球,即两个星球间存在两条没有公共隧道的路径.为了壮大联盟的队伍,这些星球将建设P条新的太空隧道.这P条新隧道将按顺序依次建成.一条新轨道建成后,可能会使一些星球属于同一个联盟.你的任务是计算出,在一条新隧道建设完…