zoukankan      html  css  js  c++  java
  • 草地

    会发现,无论操作的顺序怎么样,每个节点形成的区域都是个矩形。
    发现两个点连通要行/列同时连通。
    假设行向左走(x),右走(y)次,则(x+ygeq X)坐标差绝对值。
    我们只需要关心(x+y),所以把边权设为这个值。
    (Y)坐标类似。
    暴力连边边数达到((nm)^2),不可接受。
    但是发现如果存在三个点((a,b),(c,d),(e,f)aleq cleq e,bleq dleq f),则只需要把((a,b)->(c,d),(c,d)->(e,f))连边。
    考虑枚举每个点。
    以所有点在当前点左上方为例。维护一个值为(Y)的单调栈,表示单增点集。
    在弹栈时把栈顶和当前点连边。
    发现这样子边数变成了(nm)
    接下来考虑怎么求出答案。
    问题变成了:需要确定两个值(a,b),把(Xleq a,Yleq b)的边插入,使得整个图连通且(a+b)最小。
    这是经典的魔法森林问题,可以用LCT维护。

  • 相关阅读:
    java 学习帮助
    权限
    ftp mybatis
    注解
    hadoop english
    userDao
    发布订阅模式 和委托
    webservice
    rabbitMq视频教程
    blog url.txt
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14517982.html
Copyright © 2011-2022 走看看