洛谷P3153 [CQOI2009]跳舞
首先考虑建图,因为
每个男孩最多只愿意和个不喜欢的女孩跳舞,而每个女孩也最多只愿意和个不喜欢的男孩跳舞。
所以对于每个男孩女孩均要建一个辅助点,到该点的权值为,对于互相喜欢的男女孩相连,权值为,对于不喜欢的,则他们的辅助点相连,权值亦为。
接下来考虑源点到男孩与女孩到汇点的权值情况。
1.如果权值小于等于答案,计最大流为,则满足
2.权值大于答案,则有
所以,我可以用遍历权值从到的情况,得到答案,也可二分来做
坑点:忘记女孩也要满足小于等于
const int N = 2e4 + 86;
struct egdes
{
int to, nxt, w;
} e[N * 2]
more...