标签:
【题目大意】
有一个M * N的棋盘,有的格子是障碍。现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵。我们称这些士兵占领了整个棋盘当满足第i行至少放置了Li个士兵, 第j列至少放置了Cj个士兵。现在你的任务是要求使用最少个数的士兵来占领整个棋盘。
【思路】
还没有写完..开始做了才发现这是一道权限题没地方测…………先占个坑码一下,免得过会儿忘了。
先判断是否有解,如果把棋盘全部填满的话还是不能满足,则必定是无解的;否则必定是有解。由于问的是最少要多少个士兵,脑洞一下最少的话可能用费用流?于是乎在草稿纸上写写写..
假设没有障碍的话,可以列出这样的式子:
共(m+n)个式子,假设Xi>0,Yi>0
上述式子可以转换为:
可以看出每一个都出现了一次正的和一次负的,如果有位置是障碍的时候,接下来我们建图的时候可以当作它不存在..?
添加一个源点S和一个汇点T,对于前m个式子,由S向第i个式子连一条容量为Li,费用为0的有向边;对于后n个式子,由第j个式子向T连一条容量为Ci,费用为0的有向边。
对于aij,可以保证它在前m个式子里的第i个式子出现一次,在后n个式子的第j个式子出现一次,则由i到j(代指j+m)连一条容量为1,费用为1的有向边;对于每一个X1...
咦哪里不对..也许还需要加加减减?
标签:
原文地址:http://www.cnblogs.com/iiyiyi/p/5637902.html