当前位置: 首页 > news >正文

对网络流的一个小总结

关于网络流的复杂度 一般数据范围低于1k就可能考虑网络流

拆点的技巧

拆点可以限制一条边的流量
一条边连向另一条边 出点---->入点

最大流

我的选择是用 dinic

最小割

1最大全闭合子图 如果两个东西 (选这个必须选另一个) 那么我们可以 转化为最小割
然后dfs去跑 方案
2限制同时选
3限制同时不选
(最小割真的很妙 也很难 真的很考验思维)
十年前有一个考 最小割本质的
最小割的必经边 首先都是要跑 一遍最小割(最大流等于最小割)
最小割的可行边 跑一遍最小割

费用流

最小费用最大流
最大费用最大流
本质是最短路去找一条增广路 但是我们考虑到有负权 (有环的我们另行考虑,下面有解释) 
我们选择用spfa 优化   

上下界网络流

  最主要的思想:
  ru ++    chu  --     >0 有多余 向超级汇点连边     <0  超级源点向这个点连边 做一个供给的效果 
    

最小费用循环流

经典例题 就是 网络流24题的 餐巾计划问题 我们需要让某条边数流满 而不直接求
如果有负权环的费用流 本质的处理是 把他的负数边留满 那么我们可以向他的 反向边 连 c -inf 的流量
保证它流满

关于二分图

最小点覆盖 最大匹配
最小边覆盖 顶点数-最大匹配数
最大权独立集 顶点数-最大匹配数
最少路径点覆盖 顶点数-最大匹配数
最小路径可重复路径点覆盖 顶点数-传递闭包的最大匹配数
最长反链 =最小可重复路径点覆盖 (比较不常见)
最大团等于补集的 最大全独立集
二分图完备匹配的必经点 可以dfs
二分图完备匹配的必经边 如果满流 正向连边 不在完备匹配的边 反向连边 跑有向图 tarjan

一些新颖的建边技巧 (hard)

差分建边

最小割树 (我们可以询问任意两个点的 最小割) lca处理

我们可以分治处理
然后倍增查询

  void build(int l,int r)
    {
        if(l>=r) return;
        int x=pdx[l],y=pdx[l+1];
        int cut=Dinic(x,y);
        now++;dfs(x);int p=l,q=r;
        for(int i=l;i<=r;i++)
            if(col[pdx[i]]==now) tdx[p++]=pdx[i];
            else tdx[q--]=pdx[i];
        for(int i=l;i<=r;i++) pdx[i]=tdx[i];
        add_edge(x,y,cut);
        add_edge(y,x,cut);
        build(l,p-1);build(q+1,r);
    }
    

全局最小割 待补

最大密度子图 待补 (不会,待补)

--------------

 可结合二分答案 也是比较经典了
 会有线段树建图   
 可以结合树连剖分(代码hard)

相关文章:

  • 人体神经系统结构图高清,人体神经系统全貌图片
  • java毕业设计乡镇卫生院信息管理mybatis+源码+调试部署+系统+数据库+lw
  • Python逆向爬虫之scrapy框架,非常详细
  • 产品经理基础--07用户端产品设计
  • SpringCloud 下 MultipartFile 序列化(JSON)出错的解决方案
  • MIKE水动力笔记12_数字化海图1之提取确值水深点
  • 【CSDN创作话题 】丨 竞赛那些事
  • 2022年S1000D和ATA用户大会资料
  • Vulnhub Empire Lupin One渗透测试
  • java教程之高性能并发计数器之巅峰对决
  • 机器学习实战(6)——决策树
  • 第二十四节 SpringBoot使用spring.factories
  • 产业互联网,正在进入到深水区,人们对于产业互联网的认识才能够全面
  • Vite创建Vue2项目
  • 瑞芯微 Rockchip RKNN-Toolkit 环境搭建
  • 网络传输文件的问题
  • $translatePartialLoader加载失败及解决方式
  • @jsonView过滤属性
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【刷算法】从上往下打印二叉树
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • input的行数自动增减
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Javascript Math对象和Date对象常用方法详解
  • Python学习之路16-使用API
  • React Transition Group -- Transition 组件
  • Redis 中的布隆过滤器
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue 重置组件到初始状态
  • Zepto.js源码学习之二
  • 将 Measurements 和 Units 应用到物理学
  • 微信开放平台全网发布【失败】的几点排查方法
  • 怎么把视频里的音乐提取出来
  • Hibernate主键生成策略及选择
  • PostgreSQL之连接数修改
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​什么是bug?bug的源头在哪里?
  • #162 (Div. 2)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $NOIp2018$劝退记
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (六)激光线扫描-三维重建
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (五)网络优化与超参数选择--九五小庞
  • (译)2019年前端性能优化清单 — 下篇
  • .describe() python_Python-Win32com-Excel
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET MVC第五章、模型绑定获取表单数据
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 分布式技术比较
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景