首页 > 其他分享 >网络流做题记录

网络流做题记录

时间:2024-04-24 13:23:51浏览次数:30  
标签:连边 容量 记录 网络 汇点 贡献 流做题 INF 奶牛

网络流的建图灵活,需要大量练习。

一些常见套路:

  • 拆点:一般来说可以把一个点拆为一个入点和一个出点并连边,用于点边转化。

  • 连 INF 边:这种边不可能包含在最小割中,可以用来将点定向。

  • 建立超级源点和超级汇点:用于构建网络流模型。

  • 加辅助点:比较灵活,可以用于处理多种问题。

做题记录:

1.P1345 [USACO5.4] 奶牛的电信Telecowmunication

比较经典的一道拆点题。

具体做法就是将每个点拆为一个入点和一个出点并连上容量为一的边,并将题目中给出的边全部设为 INF, 那么问题转化为了最小割。

直接做 \(\rm dinic\) 求网络流即可。

2.P2057 [SHOI2007] 善意的投票 / [JLOI2010] 冠军调查

一道经典的二者选其一的题目。

把小朋友看作点,我们发现题目实际上是要把所有点分为两个点集,这很像最小割模型。

先建一个超级源点 \(s\) 和一个超级汇点 \(t\),如果一个点分到 \(S\) 点集就表示同意睡觉,分到 \(T\) 就是不同意。

考虑如何表示出意愿对答案的贡献,容易想出如果同意就跟 \(s\) 连边,否则与 \(t\) 连边,容量为 1。

接下来考虑小朋友之间的关系对答案的贡献,很显然的,将小朋友连上双向边即可(容量为 1)。

3.P1361 小M的作物

正面不好做,正难则反。先将原题的所有给出的可能贡献值加起来,现在问题转化为最小化减掉的贡献。

还是二者选其一问题,对于第一类贡献,像上一题一样套路的建源汇点,并连边,容量为贡献值。

对于第二类贡献,直接连边显然不可行。于是考虑加入辅助点,我们简化到两点的情况:(学校不好画图就借鉴题解的了)

此时我们加入两个辅助点,类似于这样:

黄边的容量和方向比较好想,关键是蓝边的容量和方向。

我们分类讨论两点的选择情况:

1.两点都在 \(S\) 集合中,我们要强迫点 \(S\) 在 \(S\) 集合中,于是我们从两点向 \(Y\) 连边,容量为 INF,此时 \(Y\) 与 \(T\) 的边会计算到割中,而两条容量 INF 的边变为了反向边,不会记录到割中。

2.两者都在 \(T\) 集合中,同理连边。

3.两者不同集合。此时的图已经完美的符合了这个情况,可以自己手推一下。

4.P2857 [USACO06FEB] Steady Cow Assignment G

注意这个题目中的答案是最大 - 最小 + 1,被恶心似了。

考虑二分答案 \(x\) ,枚举最小的坐次 \(i\) ,此时所有奶牛可选区间为 \([i,i + x- 1]\)。

将每个奶牛和座位看作点,很像二分图匹配的样子。套路的建立超级源点 \(s\) 和汇点 \(t\),并让 \(s\) 向每个奶牛连边,容量为 \(1\),每个座位向 \(t\) 连边,容量为 \(v\)。

对于每个奶牛,将奶牛和所有它可匹配的座位连边,容量为 1。

答案就是网络的最大流。

标签:连边,容量,记录,网络,汇点,贡献,流做题,INF,奶牛
From: https://www.cnblogs.com/little-corn/p/18155068

相关文章

  • 网络流小记
    基本定义:网络:一张有向图。流量:经过一条边的流的大小,一条边\((u,v)\)的流量记为\(flow(u,v)\),一个网络的流量定义为\(∑f(s,x)\)。容量:一条边的流量上限,一条边\((u,v)\)的容量记为\(cap(u,v)\)。费用:经过一条边单位流量的所需费用,一条边\((u,v)\)的费用记为......
  • 泰山派RK3566学习记录
    一.烧录环境1.rkdeveloptoolSPL烧录命令格式ForwithSPL:rkdeveloptooldbrkxx_loader_vx.xx.binrkdeveloptoolgptparameter_gpt.txtrkdeveloptooldbrkxx_loader_vx.xx.binrkdeveloptoolwl0x40idbloader.imgrkdeveloptoolwl0x4000u-boot.itbrkdeveloptoolw......
  • 电力控制系统设计方案:923-6U CPCI的光纤网络电力控制系统
    6UCPCI的光纤网络电力控制系统 一、设备概述   柔性直流输电系统中用于控制与测量的FS系统,适用于风电和太阳能发电的并网快速数值计算和闭环控制,以及与直流输电系统的换流器有关的特殊控制功能,包括门控单元的信号处理。该控制板的最大响应周期为1us,可以适......
  • 记录个简单的进度条同步显示方法
    //进度条同步显示的方法publicvoidCommonProgressHandle(Action<Action>bizAct,intmax,stringmsg){using(SimpleProgresssp=newSimpleProgress()){sp.Message=msg;sp.Position=0;......
  • Flink生产问题记录
    1.集群有2个flink版本,用application方式启动报错Causedby:java.lang.ClassCastException:cannotassigninstanceoforg.apache.commons.collections.map.LinkedMaptofieldorg.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.pendingOffsetsToCommito......
  • ROS1学习记录(4.0)
    学习视频:11.订阅者Subscriber的编程实现_哔哩哔哩_bilibili创建订阅者:先将相关源码放入src内部: 进行编译前一样要先设定编译规则:add_executable(pose_subscribersrc/pose_subscriber.cpp)target_link_libraries(pose_subscriber${catkin_LIBRARIES}) 保存后回到根目......
  • 无源RLC电路和阻抗匹配 part2:串并联网络变换+L型匹配
    串并联变换(以RL串联→并联为例)若使上述变换成立,串联支路(Ls、Rs)总阻抗应等于并联支路(Lp、Rp)总阻抗因为可得RC串联→并联:上述变换为窄带阻抗变换,仅在以w0为中心的窄带内成立L型匹配L型匹配所用元件较少,仅用两个无源器件即可构成(电容or电感),根据Rs和Rl的大小关系可分......
  • linux 网络 cat /proc/net/dev 查看测试网络丢包情况
    可以通过cat/proc/net/dev查看测试网络丢包情况,drop关键字,查看所有网卡的丢包情况 bytes:接口发送或接收的数据的总字节数packets:接口发送或接收的数据包总数errs:由设备驱动程序检测到的发送或接收错误的总数drop:设备驱动程序丢弃的数据包总数fifo:FIFO缓冲区错误的......
  • 第12課-Mirth生产环境宕机后基于服务配置XML备份恢复之记录
    MirthConnect作为集成交换平台,生产环境互联互通了众多系统,脑残的是连自家关键业务系统都依托mirth来进行交互,宕机或故障对身处其中的一次紧张的业务系统升级都造成高度的精神紧张;这种宕机经历多次之后,深感疲惫和无语;今天用生产环境低版本Mirth实践了一次恢复过程,总结以记之。下......
  • 分类算法(Classification Algorithm)需求记录
    [toc]比如说,在WEB扫描器场景中。一个扫描器在扫描过程中,它可以自动识别接口类型并采用相应分类规则进行漏洞检测的算法,这种通常属于一种称为"智能扫描"(IntelligentScanning)或"漏洞扫描引擎"的技术。这些算法利用机器学习、深度学习和模式识别等技术,通过分析网络流量、响应内容......