这一周的并查集相对来说时间比较紧,间隔时间也短了很多,又加上在牛客上做了不少并查集的专题,对于并查集有了更深的理解,我发现并查集得题相对来说模板比较固定一共就几个固定的函数,和方法,所以在模板,方法固定的情况下,并查集的题更多的是出在题目的迁移变化上,
有时候我们做题会发现,有些题目的出题方式也都是固定的比如开头总是给定n个数量的东西,以及m条边的连接情况,这一类题基本比较单一,直接套模板就行了,还有些就是比较绕的,各个关系隐藏在题目里,举个例子
比如:P6691 选择题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这是一道有 n 个选项的选择题,每个选项的内容都很独特。第 i 个选项的内容的形式如下:
第 ai 个选项是正确/错误的
第一行有一个正整数 n,表示选项个数。接下来 n 行,每行有两个整数ai,opti,描述一个选项。其中当opti=1 时,表示这个选项的内容为 第 ai 个选项是正确的;当 opti=0 时,表示这个选项的内容为 第 ai 个选项是错误的。
样例: 4 2 1 4 0 1 1 2 0
从题目中寻找关系就非常重要,题目中显示1说2是对的,那么有两种情况要么1说的对要么1说的错如果1说的对那么2就是对的,如果1错那么2就是错的所以1和2是同错同对的否则1和2 就是一对一错,这样关系就出来,最后合并的时候发现父节点相同时如果回答相反那么就是不合法的,所以处理好这方面就行。
因此做这类并查集的题的关键就是找出题目中所隐含的各个点之间的关系,使之形成树结构,然后根据题目要求对这些关系进行处理即可
然后是拓扑排序,总的来说拓扑排序大多是用来处理特殊有向图对节点进行排序的方法,像是那些有有向图,又让对节点进行排序的大多需要考虑拓扑排序,而且,拓扑排序也都那些模板,只要做过几道经典的模板题,就会熟悉这些题目的答题
总之并查集和拓扑排序算是结束了,这几周下来,做题的时间也越来越紧了,越临近期末时间越紧,平时做题的时间自然也会受到影响,下周更要合理的安排时间,争取每天的做题和思考的时间都能得到合理分配,争取让自己更有收获吧,