首页 > 其他分享 >网络流在最优化问题中的应用

网络流在最优化问题中的应用

时间:2023-02-22 19:13:56浏览次数:51  
标签:连边 退流 匹配 个点 submission 原图 流在 网络 最优化

AGC013E Snuke the Phantom Thief

首先考虑只有 LD 的限制,这样是平凡的,只需要求出横坐标第 \(i\) 个点的值至少要多少,纵坐标至少要多少,然后将每个点拆点后向能连到的横坐标点和纵坐标点连边,然后跑最大费用最大流即可。

现在加上 RU 的限制,我们发现这个限制好像不知道加在哪些点上,只知道是倒数哪个点,这好办啊!枚举选的点数不就好了!

总复杂度 \(O(n^5)\) 但是显然跑不满就是了。

submission

[HNOI2013]切糕

最小割模型。

建立网络流模型,将每个纵轴看成 \(R+1\) 个点,这 \(R+1\) 个点形成的一条链中间的 \(R\) 条边对应了这 \(R\) 个点的权值。

我们定义割掉一条边代表选了这个点,那么我们就是要求相邻两个割点的边不能超过 \(D\) 。

相当于我们不能让 \(<i\) 被割且对面 \(>i+D\) 被割。因此我们让对面的 \(i+D\) 向 \(i\) 连一条无穷边即可。

还要保证一条链最多割一条,但是貌似不需要。

submission

CF1630F Making It Bipartite

首先我们发现这个东西是偏序集,这很好啊,说明如果存在 \((a,b)(b,c)\) 那么一定存在 \((a,c)\) 。

一个图是二分图的充要条件是没有奇环,而上面显然有了一个。因此我们的目标就是让图中没有一个点既有入边又有出边。

因为是偏序集,所以考虑用最长反链相关来解决。将每个点 \(u\) 拆成两个点 \(u_1,u_2\),表示在最后的图上只有入度或者只有出度。显然这两个之间是矛盾的,因此可以 连边 \(u_1\to u_2\) 。对于原图存在的一条边 \((u,v)\) ,显然 \(u\) 和 \(v\) 之间的关系除了 \(u\) 只有出边,\(v\) 只有入边之外都是矛盾的,因此连边 \(u_1\to v_1,u_1\to v_2,u_2\to v_2\) 即可。然后可以跑最小链覆盖。

时间复杂度是Dicnic的 \(O(A\ln A\sqrt n)\) 但是显然不满。

submission

[NOI2019] 序列

貌似是模拟费用流经典题,但是我没做过(

首先考虑建立费用流模型,大概就是首先对 \(S\to i\) 连边 \((1,a_i)\) ,\(i\to i+n\) 连边 \((\infty,0)\),\(i+n\to T\) 连边 \((1,a_i)\) 。

至少选 \(L\) 个相同位置不好做,转化成至多选 \(K-L\) 个不同位置,那么可以建立点 \(x,y\),\(x\to y\) 连边 \((K-L,0)\),然后每个 \((i,x)\) 连边 \((\infty,0)\) ,每个 \(y\to i+n\) 连边 \((\infty,0)\)。对这个图跑最大费用的 \(K\) 个流就是答案。

然后模拟最短路的过程。首先可以想到的方案是 \(S\to i\to i+n\to T\) 和 \(S\to i\to x\to y\to j\to T\) 。这是不退流的最短路。

记 \(i\) 的匹配点为 \(p_i\),如果要退流还有以下三种:

  • \(S\to i\to x\to j\to j+n\to T\)。这对应于原图将原来的 \(j\to p_j\) 转化成 \(i\to p_j,j\to j+n\),发现这样是多了 \(a_i\) 和 \(b_j\) ,且 \(x\to y\)的流量不变。
  • \(S\to i\to i+n\to y\to j+n\to T\)。容易发现这和上一种情况是对称的。
  • 第三种情况比较复杂,\(S\to i\to i+n\to y\to x\to j\to j+n\to T\),对应于原图就是将 \(i\to p_i\) 变成 \(i\to i+n,p_i-n\to p_i\)。也就是多了 \(b_i\) 和 \(a_{p_i-n}\) 。
  • 单从图上来看貌似还有前两种拼在一起的情况,但是这样一次性增加了两个流量,且实际上就是先第一种,然后不退流的第二种。所以不用考虑。

因此我们可以用堆来维护五个值:

  • \(a_i+b_i\),满足 \(i\) 和 \(i+n\) 都没有匹配。
  • \(a_i\),满足 \(i\) 没有匹配。
  • \(b_i\),满足 \(i+n\) 没有匹配。
  • \(a_i\),满足 \(i\) 没有匹配,且 \(i+n\)匹配了。
  • \(b_i\),满足 \(i+n\) 没有匹配,且 \(i\) 匹配了。

这五个值可以计算出上面五种情况的答案。但是这样不太对,因为上面五种情况最大值唯一还好说,如果不唯一,那么会有优先级的问题。

贪心地想,肯定是能任意匹配地对数越多越好,因此退流第三种显然优先级最高,然后是三种不影响任意匹配数地情况相等,最后要加一次的情况优先级最低。

这样你会得到一个大常数 \(O(n\log n)\) 做法,在 O2 加持下貌似跑得飞快。

submission

标签:连边,退流,匹配,个点,submission,原图,流在,网络,最优化
From: https://www.cnblogs.com/275307894a/p/17145528.html

相关文章

  • 详解神经网络基础部件BN层
    摘要:在深度神经网络训练的过程中,由于网络中参数变化而引起网络中间层数据分布发生变化的这一过程被称为内部协变量偏移(InternalCovariateShift),而BN可以解决这个问题。......
  • 网络知识点汇总1-路由
    1.路由选择的三条原则 1)最长掩码匹配原则:掩码越长越优先; 2)路由优先级/管理距离越小越优:优先级参照下表  在华为的设备中,路由器分别定义了外部优先级和内部优先级......
  • 【黑科技】GPS北斗卫星授时技术下的NTP网络时间服务器
    【黑科技】GPS北斗卫星授时技术下的NTP网络时间服务器【黑科技】GPS北斗卫星授时技术下的NTP网络时间服务器京准电子科技官微——ahjzsz计算机网络时间同步摘要:保持生......
  • hadoop - hadoop2.6 分布式 - 集群环境搭建 - 系统搭建和网络配置
    1.配置   我的搭建环境是个人笔记本(deepinlinux)+VirtualBox(3个ubuntulinux);   宿主计算机(个人笔记本)配置如下(很低):            ......
  • 使用Python和SAS Viya分析社交网络|附代码数据
    原文链接:http://tecdat.cn/?p=7303原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于社交网络的研究报告,包括一些图形和统计输出。   本示例使用Python和......
  • 人工智能真的快要来临了!全球首个光电子神经网络问世
    神经网络正席卷着计算世界。在它们的帮助下,研究人员得以推进机器学习的进程。面部识别、对象识别、自然语言处理、机器翻译……这些原本都是人类才有的技能,现在逐渐成为......
  • 手动搭建一个桥接网络
    1. 创建三个namespace:net0、net1、netbridge(用于放网桥)2. 创建一根网线,veth0端口重命名为net0-a放到net0,veth1 端口重命名为net0-b放到netbridge3. 创建一根......
  • Java网络编程
    UDP和TCP网络协议,基于Socket的UDP和TCP网络编程的介绍。Author:MsuenbDate:2023-02-21网络基础知识每个计算设备上都有若干个网卡,每个网卡上有(全球唯一)单独的硬件......
  • 主机字节顺序和网络字节顺序
    字节顺序单个字节,不存在字节顺序这一说字节顺序就相当于排队是从高往低排还是从低往高排。从高往低排就是大端字节顺序从低往高排就是小端字节顺序具体定义小端字节......
  • 网络流复健
    好长时间不做网络瘤了,啥也不会,于是复健了下。导致现在我看到网络瘤就恶心。大部分都是题,还有一小部分也是题。在这里放个歌词罢。\(\textbf{Borninthemonthofda......