Roundgod and Milk Tea[hdu6667]

题意

n 个班,每个班 ai 名学生,共做了 bi 杯奶茶。每个学生最多喝一杯奶茶,但不能喝本班的。问最多有多少个学生能喝到奶茶。

n106,0ai,bi109

题解

这道题让我学会了 Hall定理。。。

Hall定理详见:Hall定理

首先先建个二分图,每个班的每个学生代表的点都向别班的每杯奶茶连边,

题目转换成了求该二分图的最大匹配。

Hall定理的推论:最大匹配数 = |X|max(|W||Ng(W)|)

Q=|W||Ng(W)|

下面考虑如何求 Q 的最大值。

分三种情况讨论:

1,|W|=0,此时 Q=0

2,W 内只有第 i 个班的学生,此时 |Ng(W)|=(bj)bi,为了让 |W| 最大化,|W| 应为 ai,此时 Q=ai+bi(bj)

3,W 内有多个班的学生,此时 |Ng(W)|=bi,为了让 |W| 最大化,|W| 应为 ai,此时 Q=(ai)(bi)

所以答案为:(ai)Q

程序

学过编程的人都能写出来,懒得贴了。