zoukankan      html  css  js  c++  java
  • 【网络流24题】二分图点权最大独立集(方格取数问题)

    Description

    在一个有m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。

    编程任务:
    对于给定的方格棋盘,按照取数要求编程找出总和最大的数。

    Input

    第1 行有2 个正整数m和n,分别表示棋盘的行数和列数。
    接下来的m行,每行有n个正整数,表示棋盘方格中的数。

    Output

    程序运行结束时,将取数的最大总和输出

    Sample Input

    3 3
    1 2 3
    3 2 3
    2 3 1

    Sample Output

    11

    就是找一些点,使得互不相连,并且点权和最大。

    结论是

      先黑白染色一次。

      S向所有黑点连一条为该权值的边,所有白点向T连一条为该权值的边。

      黑点向周围四个白点连无限流量的边。

      转化为了一张图,ans=所有点权和-最小割。

    证明是

      其实我认为有最大闭合权图思想,就是说,最小割=简单割,很显然吧。

      将左边的边割去,表示这些黑点不选,右边的边割去,表示这些白点不选,

      那么,最小割保证不连通,所以保证了这些点互不相连。

      所以所以点权和-最小割=最优解。

  • 相关阅读:
    3、Less-计算
    2、Less-混合
    1、Less-初见
    5、反射-动态代理
    4、反射-类的构造器:Constrctor
    3、反射-Field
    2、反射-Method&父类
    1、反射-Class&ClassLoader
    5、URLConnection(3)
    Linux进程状态查询
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/7927672.html
Copyright © 2011-2022 走看看