题意
有$n$个球和$m$个筐,每个球可以放入与其连边的某个筐,每个筐最多放三个球。将所有球放入筐中,筐中不超过一个球时称为「半满」,需要使半满的框数最多,并输出其中一种方案数。
题解
把一个筐拆成三个点,三个点之间两两连边。将可以放入某个框中的球向框的三个点连边,跑一遍带花树,$n-maxmatch$即为最大值。
因为对于某一个筐的三个点来说:球数为0时最大匹配为1,球数为1时最大匹配为2,球数为2和3时最大匹配为2。
那么对于这个筐,它对答案的贡献即为(最大匹配数-球数),输出方案即可。
注意求解时要先匹配球,否则会先匹配同一个筐与筐之间的连边,这样求出的方案就不对了orz。
代码
1 |
|