• Dinic Rush


    2022.3.20 模拟赛 T1

    之 直角拐弯绳子

    因为是私题,所以没有题面。

    手玩可得全为偶数的点 能且仅能 为 \(A_0\),全为奇数的点 能且仅能 为 \(A_k\)

    显然是,最小割。如果点 \(P\) 可以通过将数值为偶数的一维 +1 或 -1 变成 \(Q\),那么连边 \(P\to Q\)

    以及生而注定 \(A_0\) 点被源点连,生而注定 \(A_k\) 点把汇点连。

    跑最小割即可。

    P5934 - [清华集训2012]最小生成树

    https://www.luogu.com.cn/problem/P5934

    \(u\to v:w\) 存在于最小生成树中,当且仅当连上所有 \(< w\) 的边后,\(u,v\) 不连通。于是最小割即可,最大生成树同理。

    如果是要求 \(u\to v:w\) 在所有的最小生成树中,那么将 \(<w\) 改成 \(\le w\)

    P1361 - 小M的作物

    https://www.luogu.com.cn/problem/P1361

    最大流不行就最小割。

    注意:删去最小 = 留下最大!我是 nT !

    P3980 - [NOI2008] 志愿者招募

    https://www.luogu.com.cn/problem/P3980

    首先看到有两种条件:费用和人数,那么想到费用流

    首先建立 \(n\) 个点代表 \(n\) 天,从 S 向 1 连边,\(i\)\(i+1\) 连边,\(n\) 向 T 连边。这些边边权为 \(\inf-a_i\)(S,T的边是 inf),费用是 0.

    然后对于一个人,连边 \(s_i\to t_i:[\inf,c_i]\)。流量为 inf,因为有无限个志愿者。

    为什么是正确的?考虑如果 \(i\) 号点得到的流量是 inf,那么 \(i+1\) 号点 通过 \(i\to i+1\) 边得到的流量,就是 \(\inf-a_i\),剩下的 \(a_i\) 个流量,就必须要通过「人」边来传递了!

    P7425 - [THUPC2017] 机场

    https://www.luogu.com.cn/problem/P7425

    与上题原理相同。然而我懒得看题面


    FROM https://www.luogu.com.cn/training/1230#problems

    CF311E - Biologist

    https://www.luogu.com.cn/problem/CF311E

    最大权闭合子图问题。(此问题的模板https://blog.csdn.net/can919/article/details/77603353

    先把原串全变成 1,然后计算此时的答案,ans0 =【所有变 1 要求的奖励之和】-【 0 变成 1 的所有 \(v_i\) 】-【非法的要求的赔偿之和】。

    如果想满足一个要求,就要满足所有的 0,1 都匹配,于是想到最大权闭合子图。

    我们给原串的 \(n\) 个位置,建立相应的 \(n\) 个点。对于 \(m\) 个要求,也建立相应的 \(m\) 个点。

    对于一个变 0 要求,连边它到所有所需位置的原串点,权值为 inf。然后源点给他连上边权为 \(w+g\) 的边(相当于反悔)。

    对于一个变 1 要求,连边所有位置到它所需位置的原串点,权值为 inf。然后他给汇点连上 \(-w-g\) 的边。

    答案就是 所有正权边 减去 最小割(注意:事实上跑最小割时,边权都是绝对值)再加上原来的 ans0。

    注:事实上发现答案加上 ans0,刚好就是 \(\sum w\) 减去 最小割。

    P6054 - [RC-02] 开门大吉

    https://www.luogu.com.cn/problem/P6054

    算出 \(i\) 人答 \(j\) 题的期望得分 \(v(i,j)\)

    这种分配的问题,考虑最小割。

    那么考虑给每个人弄一个“答题链”,也就是 \(dot(i,j),j\in [1,m]\),然后相邻的点连边 \(v(i,j)\)。如此做出,则【刚好答一套题】就是【割掉一条边】。

    对于限制:第 \(i\) 个人比第 \(j\) 个人大 \(k\),连边 \(dot(j,x),dot(i,\ \min(m,x+k)\ )\),容量为 inf,代表如果 \(i,j\) 相差小于 \(k\) 那么 就会导致流 inf 边流过。

    P2053 - [SCOI2007]修车

    https://www.luogu.com.cn/problem/P2053

    对于每个人的等待时间不好考虑,转而考虑每辆车会对答案产生多少贡献
    不难看出,如果第 \(i\) 辆车是第 \(j\) 位技术人员倒数第 \(k\) 个修的,那么就会产生 \(k*cost_{i,j}\) 的代价。
    那么我们把每个技术人员拆成 \(k\) 个点,每个点表示倒数第 \(k\) 个进行的工作,每个结点连的边的费用也就乘以对应的 \(k\) 倍。
    由于费用流的最优性,这些点一定是顺次选取的。

    P4043 - [AHOI2014/JSOI2014]支线剧情

    https://www.luogu.com.cn/problem/P4043 之 galgame 玩家

    首先保证每个点至少流量为 1.然后还要求费用最小。

    这把 【费用 + 上下界可行流】写在脸上了。不愧是 2014 的题目。

    P4553 - 80人环游世界

    https://www.luogu.com.cn/problem/P4553

    刚好流过 \(V_i\) 个流?直接上下界无脑放就行了。

    注意每个点都要从源点连边,向汇点连边,因为我可以从任意国家启航,从任意国家结束旅行。

    P1646 - [国家集训队]happiness

    https://www.luogu.com.cn/problem/P1646

    经典模型。

    P3511 - [POI2010]MOS-Bridges

    https://www.luogu.com.cn/problem/P3511

    先二分答案,那么有一些边是双向边,有一些边是单向边。注意,双向边不能拆成两个单向,因为一条边只能走一次。

    如何判断是否有欧拉回路?

    两个条件:图联通,每个点只有一个出度和一个入度。

    于是网络流:对于每个点建一个点,每个边也建一个点。

    然后按照理解连边即可。

  • 相关阅读:
    几个常用的排序算法
    计算机网络的一丢丢知识点
    最小的k个数
    操作系统的一丢丢知识点
    MySQL一丢丢知识点的了解
    B+树
    重建二叉树
    Redis简介
    shell脚本常用案例-5.10
    笔记-网络学习-子网划分
  • 原文地址:https://www.cnblogs.com/BlankAo/p/16084016.html
Copyright © 2020-2023  润新知