• 网络流(1)


    A.奇怪的游戏

      处理网格图常用的黑白染色,将黑白格看成左部点和右部点,之间连边即可。

      若$n*m$为偶数,那么答案具有单调性,可以直接二分答案,若当前二分出来的值最大流=应该操作的次数,那么这个值是可行的。

      对于奇数的情况,黑白格权值之和的差不变,所以合法权值最多只有一个,解方程求出来,$check$一下就行了。

    B.士兵占领

      将"某一行至少选k个"转化为全选之后,每一行最多删掉若干个,列同理。

      没有限制的格子行列之间进行连边,限制流量,之后最大流就是最多能删掉多少个,用所有格子减去最大流就是答案。

    C.紧急疏散

      因为答案显然具有单调性,所以直接二分答案。

      因为数据范围很小,可以考虑将每个门拆成时间个,每个向汇点连流量为一的边,就可以完成对门的限制。

      对于某个空地,连向所有它能走到的门,跑最大流即可。

      然而这样是边数$O(n^5)$,(虽然能过)。然后每个门向上一个时间的门连边,每个空地只向对应时间的门连边即可。

    D.狼抓兔子

      直接跑网络流就可以过,正解是平面图转对偶图,平面图中的一个割对应对偶图中一条路径,因此只要求出对偶图中源点到汇点的最短路即可。

    E.切糕

      如果没有任何限制,一个显然的建图方法是将每一列建成从源到汇的一条通路,最小割就是答案。

      如果有了限制,那么只需要使得割掉两个不合法的点使得S->T仍然联通即可,所以每一个点(x,y,z)向周围的列的(i,j,z-d)连边即可保证这一点。

    F.Figure Eight

      

    G.最大获利

      典型的最小割模型,表现为若i,j同时选,那么获得一些收益。

      连边方法:新建一个点k,i->k连inf,j->k连inf,k->T连k的收益,S向所有的中转站连对应花费的边。由于保证了对于任意一个收益,要么同时选择两个中转站,要么放弃这个收益,所以是正确的。用总收益减去最小割就是答案。

      这道题其实可以只建n个点,具体和人员雇佣非常像,下面说。

    H.happiness

      同样是最小割的模型,对于某个同学,S向同学连文科收益的边,向T连理科收益的边,相邻同学共同收益仍然可以转化为最大获利的模型,建边类似。

      这道题似乎有更好的做法,然而我不会。

    I.employ人员雇佣

      对于每个经理,S向他连雇佣费用的边,表示选。

      对于某个经理i,若不选,那么他对于其他经理造成的所有贡献都会损失,所以向T连流量为$sum e_{i,j}$的边,表示损失。

      与前面两道题不同的是,若两个经理一个选一个不选,那么还要损失一定收益,所以只要让割掉其中一个经理之后仍然联通即可,对于收益$E_{i,j}$,只要从i向j连一条流量为$2*E_{i,j}$的边,表示原来j对i造成的贡献拿不到,还要损失。

    J.不同的最小割

      似乎是一种叫做最小割树的数据结构的模板题。

      一张n个点的图中最多只有n-1种本质不同的最小割,并且形成了树状结构,并不会证。

      于是就可以用类似分治的方法,在当前集合中任取两点作为源和汇,求出最小割,最小割将原集合分成了两部分,继续向下递归这个过程即可。

    K.晨跑

      费用流模板题。

    L.80人环游世界

      是一道上下界费用流模板题,然而当时并不会,所以想到了和skyh一样的神奇的方法。

      首先流量只能限制人数和经过次数的其中一个,考虑使用某种技巧使得不合法的解一定不优。

      用流量限制人数,对于经过次数的限制,进行拆点,经过一个点的费用设为-inf,就可以保证费用最小的时候必然会将经过次数全部用完,由于经过的总次数是一定的,最后在费用流求出来的答案上直接加上inf*经过总次数即可。

      似乎很多上下界的题目都可以这样水过去,比如星际竞速和支线剧情,对于一条流量限制为$[a,b]$的边,前a次经过费用减去inf,后面$b-a$次为原费用就可以保证合法。然而这样很容易建出负环,然而很多题都保证了无环,并不知道为什么。

      顺便谴责skyh乱diss行为。

    M.修车

      正序不好考虑,考虑倒序,那么若第i位修车师傅修的倒数第k辆车所花时间为c,那么代价为c*k。

      于是费用流跑一遍就可以了。

    N.数字配对

      这题和千钧一发类似,都是通过构造二分图保证了合法。

      合法的数对分解质因数之后质因子个数最多差1,所以可以根据质因子个数的奇偶构建二分图。

      跑费用流就行了。

    O.美食节

      和修车类似,然而复杂度不能接受,显然每个厨师在做完倒数第一道菜的时候才会去做倒数第二道菜,所以动态建边即可。

  • 相关阅读:
    C# WinForm开发系列 OpenSource Controls
    Jenkins_FileCenter_Deploy
    DatabaseOperation_DBM Kill inactive connection
    如何在linux下检测内存泄漏
    基本数据类型
    Linux Kernel Makefiles
    让GCC编译关键字“__attribute__”给你带来方便
    内核空间和用户空间
    程序人生--一个程序员对学弟学妹建议
    arm linux
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12008899.html
Copyright © 2020-2023  润新知