• POJ 1984 Navigation Nightmare【并查集思路总结】


    算法:并查集。

    题意:给你 N 个农场

               给定 M 条关系 :x   y   len  dir  表示农场 y 在农场 x 的 dir 方向的 len 米处

               输入 Q 个问题:x  y  index

                                        在知道从从第一条关系到第 index 条关系的情况下,判断农场 x 和农场 y 的相对关系。

                                        如果能判断,则输出相对关系:水平距离差 + 垂直距离差

                                        如果不能判断,则输出 -1.

    注意每组测试数据中的每个问题中的 index 是按照从小到大的顺序给出的,所以使得问题简单化。

    思路:p[] 记录父亲节点

               rx[] 记录相对于父亲节点的水平距离

               ry[] 记录相对于父亲节点的垂直距离

               注意:rx[] 与 ry[] 是有方向的,其正负。。。

               

               每输入一个问题,保证它前面的关系全都用到。

               用并查集判断他们的关系:

               如果他们的根节点相同,则能判断关系输出 abs(rx[x] - rx[y]) + (ry[x] - ry[y])即可

               如果根节点不同,则表示暂且不能判断关系,输出 -1 即可。


    重点:1 更新 r*[]:每找一次父亲,加上父亲的秩即可。具体看代码。

                2 联合:

                   因为每次输入的关系是表示 y 相对于 x

                   所以联合时以 x 所在的根为父

                   

                  

                           y 对 x 的相对关系,视方向而定。

              

  • 相关阅读:
    Webstorm 9.0.3 注册码
    css去掉iPhone、iPad的默认按钮样式只需要一行样式就可以搞定
    手机下拉加载
    webpack vuejs项目学习心得
    nodejs常用模块之url
    jquery ajax详解
    iOS 10 (X8)上CoreData的使用(包含创建工程时未添加CoreData)
    使用StoryBoard设置Scrollview的横向滚动不用一行代码
    iOS 创建上线证书
    CoreData多表操作.
  • 原文地址:https://www.cnblogs.com/freezhan/p/3219079.html
Copyright © 2020-2023  润新知