题解 我们可以把每个格子拆成两个点,一个表示横向的,一个表示纵向的,相邻的格子横向和纵向连边. 如果直接按照题意做的话,我们应当在横向和纵向的点之间连边,有限制的边设下界为1,然后跑可行流. 或者考虑用链覆盖的思想,我们把横向点当成入点,纵向点当成出点,然后相邻的入点连向出点. 入点和出点之间连边表示的是如果流这条边,那么这个格子不放,那么有限制的格子就不连这条边. 源点连入点,出点连汇点,最大费用最大流. 代码 #include<bits/stdc++.h> #define N 2009 #…