zoukankan      html  css  js  c++  java
  • 图论 题解乱写

    1.Codeforce 704D

    网络流题目的一个经典套路就是将两种选择变形为:

    首先钦定一种选择,然后尝试替换为另一种选择。

    如果有流量即为替换,否则算没替换。

    所以本题直接建图,就得到了一个费用流做法。

    但是本题还有一个特殊的性质,即 $r,b$ 是固定的,与每个点无关的。

    所以可以直接根据 $r,b$ 的大小关系确定首先钦定的选择,然后直接跑最大流即可。

    2.关于消负环

    做法是这样的,把每个点拆成入点和出点。

    然后将源点连每个出点 $infty$ 边,每个入点连汇点 $infty$ 边。

    每个点的出点连向入点 $infty$ 边,以上费用均为 $0$,再将原图中的边改为由出点连向入点即可。

    然后跑最小费用最大流。

    首先流满所有的源汇所连的 $infty$ 边是可行的。

    所以为了保证最大流的性质,源汇所连的 $infty$ 边一定流满。

    所以每个那么对于每一组入点和出点,假设这两个点之间流了 $k$,就是说 $out_x+k=in_x+k=infty$,即 $out_x=in_x$。

    意思就是每个点的出入度平衡,然后如果一些边能够替换一堆 $0$边,就是说出现了负环。

    所以进行一些操作,就达到了消负环的效果。

    因为太菜,我觉得这个消负环做法不是很行,但是值得一提的是用到的流量平衡思想。

    然后对于负环的问题,其实可以用上下界网络流来解决。

    考虑这样一个事情,一般的上下界网络流是钦定下界,然后去流上界-下界。

    其实另一种做法是钦定上界,建反向边同样流上界-下界表示退流。

    这样的话其实可以结合两种做法,只建正边权的边就可以解决这个问题。

    3.chips

    可能的的限制数是 $n$ 级别的,所以可以暴力枚举。

    套用上面的流量平衡方法,一个想法就是建一些流量为 $1$,费用为 $1$ 的边,跑一个最大费用流,让流过这样的边来表示放上了棋子。

    然后发现其实限制并不好搞,可以反转一下。

    让流量为 $1$,费用为 $1$ 的边表示不放棋子。

    在 $i$ 行 $i$ 列之间连流量为枚举的限制,费用为 $0$ 的边表示放上棋子。

    每次判断合法然后更新答案即可。

    4.离散变量(切糕)模型

    因为边权为 $1$,所以最终的答案并不大。

    对每个点弄一条串联的链表示最短路径的取值。 

    对于一条边,给两条链加上对应的限制即可。

    5.Codeforce 720 A

    霍尔定理

    对两个点内部的信息分别排序,然后最劣的情况一定出现在二者分别选择一段前缀。

    另一种做法是考虑首先确定一些最劣情况下出现的椅子集合,然后选择能生成这样椅子集合的最坏的人的集合。

    6.ARC076 F

    这个时候考虑人的集合并不容易处理了。

    所以考虑最劣情况下椅子的集合。

    一定是一段前缀和一段后缀的并,即 $[1,l],[r,m]$ 

    然后考虑怎样的人是被覆盖在这个集合中的,即所有满足 $L_i leq l,R_i geq r$ 的人。

    这是一个二维数点问题,扫描线然后用线段树维护一下就行了。

    7.删两条以内边使得图不联通

    8.noi2017 游戏

    9.bzoj 4152

  • 相关阅读:
    涨知识| 在国内,如何顺利使用谷歌(转)
    css3网站收集
    淘宝客 新内容
    淘宝客工作计划
    淘宝客笔记
    java并发编程
    代理模式之远程代理
    动态代理
    模板方法模式
    Spring整合web开发
  • 原文地址:https://www.cnblogs.com/skyh/p/12730856.html
Copyright © 2011-2022 走看看