2021ICPC 昆明区域赛 B.Chessboard(上下界最小费用最大流)

本文详细介绍了2021年ICPC昆明区域赛B题Chessboard的解决方案,重点讨论了如何构建图以处理上下界流量限制的问题。通过撤销白色和涂黑的边来实现,并解释了为何这种建图方法正确。同时,文章提到了流量限制的处理,以及对于负数上下界可能带来的不同建边策略,并分享了AC代码。
摘要由CSDN通过智能技术生成

建图:

  1. 默认当前所有网格都为白色(方便处理),因为如果考虑当前网格都是空的话,那么行列一共有白黑两种选择,就不好处理上下界的流量限制了)。
  2. 按1处理后,将行列分别视为点 i , j i,j i,j: 行列建边:
    撤销白色的方块: 因为1中默认所有网格都为白色,所以需要有一条边进行撤销
    a d d ( j , i , 1 , s w [ i ] [ j ] ) add(j , i, 1, sw[i][j]) add(j,i,1,sw[i][j])
    涂黑色的方块: 因为可以将方块变成黑色,所以需要有一条边用于涂黑
    a d d ( i , j , 1 , s b [ i ] [ j ] ) add(i,j,1,sb[i][j]) add(i,j,1,sb[i][j])
    为什么这样一定正确?(注意到撤销白色方块是反向边,考虑到最小费用的特性首先会采取撤销白色方块的操作,所以满足题意)
  3. 流量限制问题:
    说实话当时现场赛的时候一直在纠结这个黑白动态性限制的存在怎么解决。
    需要注意到题目中给定了条件:(流量限制一定存在一个可行解)
    其实给定的 r , l r,l r,l说明了黑-白数量要满足这个区间,而我们建边的时候是撤销白色/增加黑色,实际上都是给黑-白这个整体(+1),所以看成一个整体就可以了。
    然后根据上下界网络流的概念给行列点加限制即可。
    但是这里要注意 l , r l,r l,r是有可能为负数的(笔者只学过两者都 ≥ 0 \geq0 0的情况,看了一下清华的过题code感觉建边是有一些区别的,但是具体的原因不是很了解!?
    隐隐约约有一种将负变正然后反过来建边,因为当都是正数的时候加了一条边 ( t , s , I N F ) (t,s,INF) (t,s,INF),而当都是负数的时候其实 s , t s,t s,
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值