
并查集
caozhining
这个作者很懒,什么都没留下…
展开
-
CF1209D Cow and Snacks
题目传送门 题意 有nnn个菜和kkk个人,每个人都有喜欢的两种菜,他会吃掉自己喜欢的菜,如果没有他喜欢吃的菜,他就会沮丧,让你安排一种吃菜顺序,让沮丧的人变少。 解题方法 先连边,我们发现不连通的没有影响,我们考虑连通块大小大于 111 的,如果这里里面包含 nnn 盘菜,我们可以发现我们可以通过安排顺序能让n−1n-1n−1个人满足,因为除了第一个人吃两盘其他的都吃一盘,然后用并查集维护一下,...原创 2019-11-05 15:58:05 · 343 阅读 · 0 评论 -
[NOIP2013]货车运输
题目传送门 题意 给你一张带权无向图,每次给你两个点,然你选出一个路径使得这条路径上的边权最小值最大,输出这个最小值。 解题方法 我们发现这个边一定实在最大生成树上,我们就只需要建一颗最大生成树,然后倍增lca就可以了。 代码 #include<iostream> #include<cstdio> #include<cstring> #include<al...原创 2019-11-04 17:48:39 · 171 阅读 · 0 评论 -
CF915F Imbalance Value of a Tree
题目传送门 题意 给你一颗树,问你每条简单路径上最大点权减去最小点权的和是多少。 解题方法 我们其实可以把最大点权和最小点权分开计算,最后计算贡献就可以了,我们先解决最大点权的,首先我们把所有的点权都从小到大排序,然后依次加边,我们发现这个边最终对于答案的贡献就是两个的点数之积,但是对于点权好像很难处理,我们可以考虑转化一下,定义两个点之间的连边的权值为这两个点的权值的最大值,最小值的部分以是一样...原创 2019-10-27 20:39:46 · 175 阅读 · 0 评论 -
并查集
并查集是一个比较简单的数据结构,基本上是数据结构的入门。 这个数据结构在一开始,所有节点的父亲都指向自己。原创 2019-02-27 12:42:15 · 147 阅读 · 0 评论 -
CF1213G Path Queries
题目传送门 解题方法 本题可以把查询离线,然后我们把边权从小到大排序,每次加入完这个权值的边更新这个查询的答案,同时更新后面的答案。 然后如何更新答案呢,我们只需要求出来需要练边的两侧点分别联通了多少个点,然后加上两边联动点的量的积。这个东西该如何储存呢?我们只是需要一个假一点的权值并差集,因为只查询这两个点的根的节点有多少个节点,所以只需要把答案存在根上就可以了。 代码: #include<...原创 2019-09-18 17:53:03 · 321 阅读 · 0 评论 -
[NOI2011]食物链
题目传送门 题意 有 nnn 个物种,两种物种之间存在在同类,xxx吃yyy的关系,每次给出一个条件,如果与之前冲突就是假话,否则就是正确的话。 解题方法 我们尝试把这个点开三倍,一类用来存他本身的点,第二类用来存他捕食的点,第三类用来存被捕食(天敌)的点,如果他们两个是同类的话,就把第一类点的连起来,第二类点的连起来,第三类点的连起来,如果是捕食的话,就把捕食的第一类和被捕食的第二类连起来,把被...原创 2019-10-03 10:00:58 · 143 阅读 · 0 评论