zoukankan      html  css  js  c++  java
  • 「不会」网络流

        「奇怪的游戏」:小学数学+最大流

          如果不相等,算出来要多叠多少层,否则答案具有二分性。check用最大流

        土兵占领:补集转化+最小割

          转化为最多有多少士兵能同时给一行和一列作出贡献,然后最小割可以做

        「紧急疏散」:增量+最大流

          必须根据时间拆点,而不能每经过一个时间给终点流量+1,

          因为不能让后面的人占用前面的流量

        狼抓兔子:最小割/对偶图

          不管写最小割还是对偶图都是模板

        「切糕」:最大权闭合子图

          没有D的限制的话,贪心选取即可,也可以跑个最小割

          考虑加入D的限制,即保证相邻位置没有高度相差超过D的选取

          那么加入inf边u-v强制S-u和v-T必须割掉一个就可以了

        FigureEight:dp

          好像乱入了

        最大获利:最大权闭合子图

          费用和获益的关系比较简单,把所有获益先加进来,

          然后S-x边权为费用,x-T边权为获益

          这样的原因是获益和费用互相矛盾,必须付出一个

          如果付出获益,就从一堆获益里减去,否则付出费用。

        happiness:最大权闭合子图

          没有明显的获益和费用,但是可以把选文当作获益,不选理当作费用

          然后变成了最大获利

        「employ」:最大权闭合子图

          不再是二分图的形式,思维讲话的我就想不出来了

          对于任何一个网络流$DAG$,

          都可以通过inf边的限制来强制两端的代价付出一个

          本题中,先把所有的收益加起来,那么如果都选就不管他

          如果都没选,要减去一份,一个选一个没选要减去两份

          发现如果一个人没被选,则与所有其他人的贡献都至少减去一份,

          这作为x-T的权值,那么雇佣费用为S-x的权值,表示两者至少付出一个

          如果一个选一个不选,那么还要多付出一份

          在u-v之间连权值为一份大小的边,这样只选一个时就必须割断它了

        「不同的最小割」:最小割树

          感性理解失败,尝试证明失败,nc哥的推广证明法听不懂

          能力不够,先放过吧

        晨跑:最小费用最大流

          模板题

        80人环游世界:有源汇上下界费用流

          模板题

        「修车」:拆点大法+费用流

          本来我们关心的是每个人的排队时间

          但是为了方便建图要改成关心每个人站在多少人前面

          把一个师傅拆成正在修最后一个车的师傅,正在修倒数第二个车的师傅..

          然后暴力建边跑费用流 

        「数字配对」:结论+费用流

          很巨的一点是想到这是个二分图

          因为合法的ai的质因子个数必定相差1,所以奇偶二分

        「美食杰」:「修车」+优化

          动态建边,脑子抽了才会把这个优化忘掉

        「千钧一发」:结论+费用流

          那么矛盾的两个数之间连边,求最大独立集即可

          那么求反面,最小点覆盖(其实就是跑个最小割!)

          很巨的一点是想到(猜到)(打表找到)这是个二分图

          怎么证,

          两个偶数一定满足2

          两个奇数一定满足1

          所以连边一定发生在奇偶性不同的两个点之间,所以是二分图

        线性代数:最大权闭合子图

          化个柿子

          $ans=sumlimits_{i=1}^n sumlimits_{j=1}^m B_{i,j}*A_i*A_j  -  sumlimits_{i=1}^n C_i*A_i$

          选一个数,有一个代价,

          选两个数,有一个收益,

          然后变成了最大获利

        植物大战僵尸:最大权闭合子图

          我居然想把边权串联

          把坐标排列,a[i][j]依赖a[i][j+1],还依赖保护它的所有位置

          把环扣了然后直接上最大权闭合子图

        寿司餐厅:最大权闭合子图

          一个区间的贡献依赖于仅次大于它的两个区间

          这作为S-x,那么x-T可以放上选他的代价

          首先是一个x直接连向T,然后通过一个中间点向T连一个x^2,

          只要让所有相同的x都连向这个中间点就可以保证只被割一次

        「矩阵」:二分答案+无源汇上下界网络流

          死脑筋,总想把矩阵坐标作为点

          其实完全可以作为一行和一列的连边!这点常识都没有

          二分答案check

        支线剧情:上下界最小流

          两种打法,一种是先跑一遍,再去掉T-S减去能退的最大的流

          另一种是先不建T-S,即尽量去跑不经过T-S的流,

          然后加上,那么新流必须经过T-S,它们即为最小流

        志愿者招募:无源汇最小费用可行流

          这次是将有下界的边串联起来,然后一种志愿者就是一个有费用的回流

          接到对应天数两边,就出现了循环流

        旅行时的困惑:有源汇最小流

          硬生生打成最小费用可行流然后T飞

          最小流模板是我在这道题自己yy的

        清理雪道:有源汇最小流

          和旅行时的困惑一样,甚至有点退化。

        「星际竞速」:费用流

          每个点只能经过一次,那么每个点必定入一次,出一次

          拆成入点和出点,那么入点a向a能到达的b的出点连边

          这样跑出来的流一定能拼起来,形成一条完美的路径

          至于跳跃,直接从S通过代价边连向出点即可

          80人也可以这么做

        「海拔」:对偶图

          WA了4次的模板题,我垃圾死

        老C的方块:最小割

          根据虚线所在直线在横轴上划分出的区间黑白染色,一个特殊边关联起来的两组点必然去掉一组

          那么最小割

        「无限·之环」:费用流(???)

          黑白染色,那么最大流必须为总的接口数/2,否则输出-1

          然后把一个点拆成上下左右四个接口点,建边模拟旋转

          而且不能模拟的边(比如直线)题目也说了不能转..

        我不会的一些东西:

          1.inf边的灵活应用

          2.各种图转化成二分图,需利用一些性质(星际竞速)

           或手动转化出等效题意(无限之环)

           转成二分图以后就把一长条有流的链拆开放在二分图里,

           流量限制转化成每个点向S,T连的边

          3.题目要素不一定是点,也可能作为连结其他两个要素的边

  • 相关阅读:
    React:Target container is not a DOM element
    安装完node.js,在命令行输入npm -v无反应的解决办法
    正则匹配中文字符
    设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名
    回调函数/callback
    切图 or 切片
    编写获取最终样式的函数
    【Java例题】5.2 数组转换
    【Java例题】5.1 多项式计算
    【Java例题】4.5异常处理
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/12002914.html
Copyright © 2011-2022 走看看