费用流占个坑BZOJ1458的脑洞//n\

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了费用流占个坑BZOJ1458的脑洞//n\相关的知识,希望对你有一定的参考价值。

【题目大意】

有一个M * N的棋盘,有的格子是障碍。现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵。我们称这些士兵占领了整个棋盘当满足第i行至少放置了Li个士兵, 第j列至少放置了Cj个士兵。现在你的任务是要求使用最少个数的士兵来占领整个棋盘。

【思路】

还没有写完..开始做了才发现这是一道权限题没地方测…………先占个坑码一下,免得过会儿忘了。

先判断是否有解,如果把棋盘全部填满的话还是不能满足,则必定是无解的;否则必定是有解。由于问的是最少要多少个士兵,脑洞一下最少的话可能用费用流?于是乎在草稿纸上写写写..

假设没有障碍的话,可以列出这样的式子:

  • a11+a12+...+a1n>=L1
  • a21+a22+...+a2n>=L2
  • ...
  • am1+am2+..+amn>=Lm
  • a11+a21+a31+..+am1>=C1
  • ...
  • a1n+a2n+a3n+..+amn>=Cn

共(m+n)个式子,假设Xi>0,Yi>0

上述式子可以转换为:

  • a11+a12+...+a1n+X1=L1
  • a21+a22+...+a2n+X2=L2
  • ...
  • am1+am2+..+amn+Xm=Lm
  • -a11-a21-a31-..-am1-Y1=-C1
  • ...
  • -a1n-a2n-a3n+..-amn-Yn=-Cn

可以看出每一个都出现了一次正的和一次负的,如果有位置是障碍的时候,接下来我们建图的时候可以当作它不存在..?

添加一个源点S和一个汇点T,对于前m个式子,由S向第i个式子连一条容量为Li,费用为0的有向边;对于后n个式子,由第j个式子向T连一条容量为Ci,费用为0的有向边。

对于aij,可以保证它在前m个式子里的第i个式子出现一次,在后n个式子的第j个式子出现一次,则由i到j(代指j+m)连一条容量为1,费用为1的有向边;对于每一个X1...

咦哪里不对..也许还需要加加减减?

以上是关于费用流占个坑BZOJ1458的脑洞//n\的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ4592[Shoi2015]脑洞治疗仪 线段树

bzoj4592 [Shoi2015]脑洞治疗仪

1024占个坑,晚上更新

1024占个坑,晚上更新

[SHOI2015]脑洞治疗仪

bzoj1458 士兵占据