BZOJ 2127 Happiness
(默认题面是 wyy PPT里面的题面)
我们先考虑两个人的情况,如果只有两个人,考虑从s向它们连边,割掉表示帮,再从它们向t连边,表示不帮。同时如果两个人没有选择相同的行为,我们认为这样会产生损失,注意到如果两个人选择的行为不一样,如果我们把这两个人之间连一条双向边,仍然没有割掉。现在我们需要的就是确定这条双向边的权值。
我们考虑建立出来的图是这样的:
CBDA5CE0-BE18-45C8-B919-58AF91F8818C.png
现在我们需要确定a,b,c,d,e的权值。
我们用v1表示 同时选择帮忙的额外收益,v2表示同时不帮的额外收益,那么:
c+d=v2a+b=v1a+d+e=v1+v2b+c+e=v1+v2最后得到
e=v1+v22,a=b=v12,c=d=v22所以我们可以这样建图:
对于每个人建立一个点,从s向它连一条边,容量为它选择帮忙的收益加上它与周围所有人一起选择帮忙的收益的一半,再向t连边k,容量为不帮的收益 + 它与它周围所有人一起不帮的收益的一半。
对于相邻的人,我们建立一条双向边权是同时选择帮忙或者不帮忙的平均数。
这个图上跑最小割就可以了。
cpp
1 |
|