zoukankan      html  css  js  c++  java
  • 一般难度模板复习

    Stoer-Wagner算法

    求无向图全局最小割的一种算法。设一张图((V,E))的点集为(V),边集为(E)。我们说集合(C)是图((V,E))的割,当且仅当(Cin E)且存在(V)的一个划分(S)(T),使得((u,v)in Ciff uin Sland vin T),一个割的权值(w_C)就是割中边权的和。

    考虑一个事实:对于任意两点(s,tin V),在一个割中(s,t)或在同一划分内,或在不同划分内。那么可以先考虑计算(s-t)割,再将(s,t)两点合并((s,t)之间的边消去,连向其它点的边合并)并递归计算即可。

    而Stoer-Wagner算法将告诉我们,总存在一对点(s,t)使得(s-t)最小割就是将(t)的所有边割除的情况。

    考虑这样找到满足要求的(s,t):设一个点集(V'in V),初始情况下(V')为空。对于不在(V')中的点(u),定义其权值为(w_{V',u}=sum_{vin V'}w_{(u,v)})。如果每次选择(w_u)最大的(u)加入(V')(相同则随意),那么最后两个加入的点就是(s)(t)(t)为最后一个点)。

    证明:只要证对于任意一种(s-t)(C),都有(w_Cgeq w_{{Vsetminus {t}},t})即可。令(id_{a_k}=k)(C_k={(u,v)in C|id_uleq k, id_vleq k})(V_k={a_1,a_2,dots,a_k})。将所有点按照加入(V')的顺序排成一个列({a_n}),对于任意一种(s-t)(C),设其对应的分划为(S,T),我们称满足(n>1land [a_{n-1}in S] eq[a_nin S]),即与前一个点不在一个分划内的点为活跃点,显然(t)为活跃点。对于任意一个活跃点(v),我们证明(w_{C_{id_v}}geq w_{V_{id_v},v})即可。

    采用归纳法,对于第一个活跃点(v),不难发现(w_{C_{id_v}}=w_{V_{id_v},v}),对于之后任意活跃点(v),设其前一个活跃点为(u),将(C_{id_v})中的边分为三部分:(C_{id_u})(u,v)之间的点与(v)的连边(设这个集合为(A)),其他边。那么有:

    [w_{V_{id_v},v}=w_{V_{id_u},v}+w_Aleq w_{V_{id_u},u}+w_Aleq w_{C_{id_u}}+w_Aleq w_{C_{id_v}} ]

    于是结论成立。

    扩展中国剩余定理

    显然只需要考虑合并两个同余方程的情况:

    [xequiv a_1(mod b_1) ]

    [xequiv a_2(mod b_2) ]

    第一个方程的通解为(x=a_1+k*b_1,kin mathbb{Z}),代入第二个方程即有(a_1+k*b_1equiv a_2(mod b_2)),改写为(k_1*b_1+k_2*b_2=a_2-a_1),利用扩展欧几里得求解即可。

  • 相关阅读:
    牛客多校(2020第九场)I The Crime-solving Plan of Groundhog
    牛客多校(2020第九场)I The Crime-solving Plan of Groundhog
    杭电多校第六场 1006 A Very Easy Graph Problem(最小生成树) + Krusal算法的简介
    杭电多校第六场 1006 A Very Easy Graph Problem(最小生成树) + Krusal算法的简介
    牛客多校(2020第八场)G-Game SET
    牛客多校(2020第八场)G-Game SET
    牛客多校(2020第八场)I
    牛客多校(2020第八场)I
    阿里云 Windows系统连接linux putty access denied
    跨域问题
  • 原文地址:https://www.cnblogs.com/Mr-Spade/p/13794027.html
Copyright © 2011-2022 走看看