题意:有 n n n 个城市,每个城市有 a i a_i ai 个士兵,每两个城市之间只能发生一次战争,每次战争两个城市都要消耗一个士兵,没有士兵的城市不能发生战争,问如何分配发生战争的城市,使得最后剩下的士兵总数最少,最少是多少。
思路:按照题意,发生战争相当于两个城市连边,士兵相当于一个城市度的上限,则就是在满足限制条件的情况下尽可能多的连边。这可以转化为已知每个点的度数,问是否存在一个满足每个点度数的没有自环和重边的图。
这类问题即用Havel–Hakimi定理解决:
令 S = ( d 1 , . . . , d n ) {S=(d_{1},...,d_{n})} S=(d1,...,dn) 为有限多个非负整数组成的非递增的点的度数序列。 S S S 可简单图化当且仅当 S ′ = ( d 2 − 1 , d 3 − 1 , . . . , d d 1 + 1 − 1 , d d 1 + 2 , . . . , d n ) {S'=(d_{2}-1,d_{3}-1,...,d_{d_{1}+1}-1,d_{d_{1}+2},...,d_{n})} S′=(d2−1,d3−1,...,dd1+1−1,dd