首先,一个神奇的结论:一个合法的方案存在的条件是每一个联通块的节点数都是偶数个的. 这个可以用数学归纳法简单证一证. 证出这个后,我们只需动态加入每一个边,并查看一下有哪些边能够被删除(删掉后联通块依然合法). 对于维护加边,删边,我们用动态树. 对于枚举哪些边可以被删,我们可以用堆/set来维护. 由于每一条边最多只会加一次,也最多只会删一次,所以总时间复杂度为 $O(nlogm)$. #include <cstdio> #include <queue> #include <…
CF603E Pastoral Oddities 度数不好处理.转化题意:不存在连通块为奇数时候就成功了(自底向上调整法证明) 暴力:从小到大排序加入.并查集维护.全局变量记录奇数连通块的个数 答案单调不增? 类似整体二分.(其实类似决策单调性) 横纵劈开,提前加入不会影响的边,复杂度得以保证 按秩合并并查集撤销 值域的访问,不用每次排序,答案一定是某个边的边权,提前排好序.直接访问即可 #include<bits/stdc++.h> #define reg register int #def…
这也是一道LCT维护生成树的题. 那么我们还是按照套路,先对边进行排序,然后顺次加入. 不过和别的题有所不同的是: 在本题中,我们需要保证LCT中正好有\(n-1\)条边的时候,才能更新\(ans\) 其次,更新答案的时候,已知我们的边是最小的边,所以我们要考虑删除最大的边来考虑更新答案,而求最大边的过程,可以通过\(vis\)打标记,加一个指针随时维护来解决 最后一件事!!!!!! 一定记得判断自环!!!!!!!! for (int i=1;i<=m;i++) { int x=a[i].x,y…
基本思路: 首先按照weightA升序排序,然后依次在图中加边,并维护起点到终点路径上weightB的最大值 如果加边过程中生成了环,则删除环中weightB最大的边 由于是无向图,点之间没有拓扑序,所以在建立LCT模型时,可以将原图的边也视为点,这样就转化成了维护路径上的点权最大值(Orz Hzwer) 点的连通性可以用并查集维护 AC code:(其实Splay双旋一次时只需要进行3次update,而代码中舍弃了这个优化) #include <cstdio> #include <cs…
[CF603E]Pastoral Oddities 题意:有n个点,依次加入m条边权为$l_i$的无向边,每次加入后询问:当前图是否存在一个生成子图,满足所有点的度数都是奇数.如果有,输出这个生成子图中边权最大的边的权值最小可能是多少. $n\le 10^5,m\le 10^6,l_i\le 10^9$ 题解:可以证明如果存在一个生成子图满足所有点度数都是奇数,当且仅当所有连通块都有偶数个点.并且可以知道加边一定不会使答案更劣.正解有三种:1.LCT维护最小生成树:2.cdq分治(类似整体二分)…
题目:https://loj.ac/problem/121 离线,LCT维护删除时间最大生成树即可.注意没有被删的边的删除时间是 m+1 . 回收删掉的边的节点的话,空间就可以只开 n*2 了. #include<cstdio> #include<cstring> #include<algorithm> #include<map> #define mkp make_pair #define ls c[x][0] #define rs c[x][1] usin…
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4736 题面: 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了一位火焰之神 “我将赐予你们温暖和希望!” 只见他的身体中喷射出火焰之力 通过坚固的钢铁,传遍了千家万户 这时,只听见人们欢呼 “暖气来啦!” 任务描述 虽然小R住的宿舍楼早已来了暖气,但是由于某些原因,宿舍楼中的某些窗户仍然开着(例如厕所的窗户)…
题面 考虑没有询问,直接给你一个图问联通块怎么做. 并查集是吧. 现在想要动态地做,那么应该要用LCT. 考虑新加进来一条边,想要让它能够减少一个联通块的条件就是现在边的两个端点还没有联通. 如果联通了,应该会形成一个环,我们其实可以把环中最早加进来的边删掉再加进来这条边,也不影响整个的联通性对不对. 于是我们用LCT维护一下最大生成树,顺便求出一个\(pre[i]\)表示\(i\)这条边加进来以后,环里面最早加进来的边的编号. 可以发现\(pre[i]\leq l\)那就说明,\(i\)这条边…
Portal Description 初始时有\(n(n\leq10^5)\)个孤立的点,依次向图中加入\(m(m\leq3\times10^5)\)条带权无向边.使得图中每个点的度数均为奇数的边集是合法的,其权值定义为集合中的最大边权.每次加入边后,询问权值最小的合法边集的权值,不存在合法边集时输出\(-1\). Solution 存在合法边集 \(\Leftrightarrow\) 每个连通块的大小均为偶数.如果某连通块大小为奇数,那么该块的总度数是奇数,但一条无向边会提供两个度数,所以不存…
传送门:http://codeforces.com/problemset/problem/603/E [题目大意] 给出$n$个点,$m$个操作,每个操作加入一条$(u, v)$长度为$l$的边. 对于每次操作后,求出一个边集,使得每个点度数均为奇数,且边集的最大边最小. $n \leq 10^5, m \leq 3 * 10^5$ [题解] 有结论:满足条件(每个点度数均为奇数),当且仅当每个连通块大小都是偶数(容易证明,从下往上,调整法). 那么显然可以LCT维护连通性,连通块大小以及最大边…