zoukankan      html  css  js  c++  java
  • 网络流杂题 三

    A. 1565: 植物大战僵尸

    考虑保护关系可能会出环,也就是其中任何一个一定不能被选。

    注意环的出边也是无法被选的。

    注意要找的环的出边并不是网络流建的图的出边,因为网络流反映的是必须选的关系,即由被保护者到保护者。

    然后就是简单的最大权闭合子图。

    B. 寿司餐厅

    似乎并不是很难,但是没有想到。

    考虑每次取出$(l,r)$,那么一定要取出$(l,r)$的任意一个子集。

    简单的建边方法是建边$(l,r)->(l,r-1)$ $(l,r)->(l+1,r)$。

    然后发现一个比较难搞的内容是统计选的花费,似乎可以简单转化为选$(x,x)$,必须选它后面代表花费的节点。

    因为每次选第一个的花费不同,所以再连出一条$inf$边表示选第一个的花费,选的花费为差量就好了。

    C. 51nod 1551 集合交易

    因为保证任意$k$个集合的并集大于等于$k$,那么由

    Hall定理的推论:

    假设两边的点集分别为X,Y(假设|X|<=|Y|),

    则二分图的最大匹配数为|X|−max{|W|−|N(W)|},其中W是X的子集

    可得原图存在一个完美匹配。

    那么每个集合可以找到它所对应的代表元素。

    当选出$k$个集合时,因为其中每个集合对应着互不相同的代表元素,已经到达了$k$个的限制。

    所以不能再有任意一个选择的集合含有的元素没有被选。

    那么当选择一个集合时,它的每个元素所对应的集合都应该被选。

    D. 2406: 矩阵

    考虑检验答案小于等于$k$是否是可行的。

    将行列分别放在二分图的左右部,分别向$s$ $t$连边。

    行列之间连边对应所在格子,流量任意。

    流量$1$对应着 源-行-列-汇 ,即一个格子对所在行列之和分别作出$1$的贡献。

    于是行列之和通过上下界限制。

    二分然后检验在该上下界意义下是否存在可行流就好了。

    E. 支线剧情

    上下界最小费用可行流。

    $spfa$不断找最短路补流,然后就完事了。

    按照我原来的理解这样并不合理:当$s$到$t$之间存在一条流量为负的增广路,可以在满足上下界的前提下使得费用更小。

    然而$yxs$大神指出了这样的情况并不存在:因为$t$到$s$之间存在一个$0$费用边,如果存在流量为负的增广路,出负环$spfa$必死。

    F. 1061: 志愿者招募

    难点在于如何想到无源汇。

    想到之后就没了,串联表示人员可以继承,通过上下界限制流量。

    在起点,终点,每个员工的新建点之间建出一个环,然后跑无源汇上下界最小费用可行流就好了。

    G. 旅行时的困惑

    上下界最小可行流。

    H. 清理雪道

    上下界最小可行流。

    在有源汇可行流的基础上,一个做法是:

    取出t->s边的流量,即可行流中s到t的流量,表示已经流的流量。

    删掉t->s这条边。

    考虑在残量网络上t到s的流,对应着s到t的退流。

    给该流量减去t到s的最大流,表示尽量大退流。

    另一个做法是:

    先不建t->s这条边,尽量补流,此时并不一定能跑满流。

    之后建出t->这条边,在残量网络上仍能增广出的流量,是在尽量不走t->s这条边前提下的,即最小可行流。

  • 相关阅读:
    Knowing how all your components work together: distributed tracing with Zipkin
    Java Annotation Processors
    深度剖析JDK动态代理机制
    Java 代理模式(二) Java中的动态代理
    Java 代理模式(一) 静态代理
    CGLib动态代理原理及实现
    Understanding sun.misc.Unsafe
    Finding Memory Leaks with SAP Memory Analyzer
    ubuntu18.04 安装mysql server
    Sqoop+mysql+Hive+ Ozzie数据仓库案例
  • 原文地址:https://www.cnblogs.com/skyh/p/12008906.html
Copyright © 2011-2022 走看看