cf444E. DZY Loves Planting(并查集)】的更多相关文章

题意 题目链接 Sol 神仙题啊Orzzzzzz 考场上的时候直接把树扔了对着式子想,想1h都没得到啥有用的结论. 然后cf正解居然是网络流??出给NOIP模拟赛T1???¥%--&((--%&(( 说一下非网络流解法吧. 首先题目中给出的\(g(i, p_i)\)我们可以认为是对于每个节点\(i\),分配一个节点\(p_i\),同时还有数量\(x_i\)的限制 同时题目中要求的是最小值最大,不难想到二分答案.但其实只要把边从小到大排序,依次考虑每条边能否成为答案就行了 用并查集维护节点之…
题目链接 CF444E. DZY Loves Planting 题解 可以..二分网络流 可是 考虑边从小到大排序 考虑每条边能否成为答案 用并查集维护节点之间的联通性 对于一条边来说,如果这条边可以成为答案 那么当前已经合并的每个点,都需要给它分配一个未被合并的点 这就很好判定了 代码 #include<ctime> #include<queue> #include<cstdio> #include<vector> #include<cstring&…
UOJ_14_[UER #1]DZY Loves Graph_并查集 题面:http://uoj.ac/problem/14 考虑只有前两个操作怎么做. 每次删除一定是从后往前删,并且被删的边如果不是树边则没有影响,如果是树边也不存在边能替代. 直接删除这条边就可以. 于是用一个栈来保存现场,然后按秩合并的并查集维护就OK了. 现在有撤回操作,但根据上面对删边分析出的性质. 可以这样: 如果是插入一条边,然后撤回,相当于删边. 如果删边然后撤回,相当于什么也不做. 代码还是很好理解的. 代码:…
传送门 题意:给出一张$N$个点,最开始没有边的图,$M$次操作,操作为加入边(边权为当前的操作编号).删除前$K$大边.撤销前一次操作,每一次操作后询问最小生成树边权和.$N \leq 3 \times 10^5 , M \leq 5 \times 10^5$ 可以发现可以直接大力用并查集做,因为一条边只要合并了两个集合就能产生贡献. 关于删除可以将边的加入扔到栈里面,删除的时候不断弹栈即可. 撤销操作对于加边就是删掉了一条边,而对于删边就相当于什么都不做,直接做即可. 加入每一条边之后的答案…
题目链接: 传送门 DZY Loves Chemistry time limit per test:1 second     memory limit per test:256 megabytes Description DZY loves chemistry, and he enjoys mixing chemicals. DZY has n chemicals, and m pairs of them will react. He wants to pour these chemicals…
一开始不知道题意是啥意思,迟放进去反应和后放进去反应有什么区别 对于第三组数据不是很懂,为啥312,132的组合是不行的 后来发现这是一道考察并查集的题目 QAQ 怒贴代码: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <iostream> #include <algorithm> using namespa…
显然可以用可持久化并查集实现.考虑更简单的做法.如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊.加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销,所以遇到一个要被撤销的删除操作时,直接求出去掉k条边后的MST即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #…
传送门 题意简述: 要求支持以下操作: 在a与b之间连一条长度为i的边(i是操作编号):删除当前图中边权最大的k条边:表示撤销第 i−1次操作,保证第1次,第i−1 次不是撤回操作. 要求在每次操作后输出当前图的最小生成树边权和. 思路:由于边权为当前操作编号因此相当于边是单调加入的,也就是说我们可以直接上kruskalkruskalkruskal的合并方法. 关键在于怎么维护这几个操作. 加边操作:加入一条边. 删除操作:删掉最近加入的kkk条边. 撤回加边操作:删掉最近加入的一条边 撤回删除…
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://codeforces.com/problemset/problem/445/B --------------------------------------------------------------------------------------------------------------------------------------------…
题意: 有N种药剂编号 1 ~ N,然后有M种反应关系,这里有一个试管,开始时危险系数为 1,每当放入的药剂和瓶子里面的药剂发生反应时危险系数会乘以2,否则就不变,给出N个药剂和M种反应关系,求最大的危险系数. 思路: 我们假设 1 ~ N   有 M 种反应关系 ,若果有反应关系的我们可以把他们看成是一个集合  ,假设这M种反应构成了 T个集合,那么把这T个集合中的元素依次放入试管,有几个不发生反应呢?当然是T个了,把每个集合看成是一课树,根节点和其子节点反应,这个子节点又和它的子节点发生反应…