并查集扩展问题的规律总结

对POJ 1988 1182的总结:
这两道题目都是并查集的扩展,并查集一旦扩展,题目一般都比较难
难点在于:
1、理解题目本身的逻辑,从抽象到具体。
2、怎样将题目本身的逻辑与并查集本身的逻辑相对应。
3、在题目的find(),union()设计之前,需要充分地将所需要的数据结构和逻辑搞清楚。
     (一般使用数组作为主要的数据结构,关键是使用几个数组的问题,在食物链的题目中,除了parent[],还使用了relation[]数组,来记录子节点与父节点的关系--吃_1还是被吃_2还是同类_0;在cube stacking题目中,除了使用parent[],还使用了up[]和sum[],分别记录之本块上有多少个,栈顶之下总共有多少个
4、对于并查集,常用的操作有find()和union()两个函数:
    find()所具有的功能
                                1、返回根结点的值--最基本的
                                2、压缩路径---也是最基本的
                                 3、将题目本身的关系,用递归搞好--这一点需要再好好思考,看能不能不用递归
   union()所具有的功能
                                1、将两个参数的根节点合并,注意合并的时候的合并方式--是加权合并,还是简单合并。
                                 2、关系的改变--主要是考虑根节点关系的改变,因为在合并的时候,仅仅有根节点,其他的结点都不在处理的范围内

评论

此博客中的热门博文

Linux/ARM Page Table Entry 属性设置分析

由RFE指令引发的一串故事

提交了30次才AC ---【附】POJ 2488解题报告