hihoCoder #1695 公平分队II

题目大意

Alice 和 Bob 在玩一个游戏。Alice 将 $1$ 到 $2n$ 这 $2n$ 个整数分成两组,每组 $n$ 个。Bob 从中选一组,剩下一组归 Alice。Alice 可以与 Bob 交换一个数也可以不换。游戏目标是使自己所得的 $n$ 个数之和最大。两人都足够聪明,试问 Alice 所得的 $n$ 个数之和是多少?

解法

写这篇随笔是为了总结一下这一类问题该从哪里入手进行分析。

这道博弈题和很久以前遇到的春游计划那道题一样,解法是倒推
key observation:【 Bob 必定会选择最优的那一组数(选法也许不唯一)】

记 Alice 选的 $n$ 个数为 $a_1< a_2 < ldots < a_n$, Bob 选的为 $b_1 < b_2 < ldots < b_n$ 。

若 Alice 不必与 Bob 交换一个数,即有 $a_1 > b_n$,那么此时 Bob 选的 $n$ 个数为 $1, 2, 3, ldots, n$;然而这是最差的结果;换言之,若Bob 选另外 $n$ 个数,其结果必然不比此结果差,从而此种情况不可能出现,所以 Alice 必定会拿 $a_1$ 交换 $b_n$。根据 Bob 会在二者中取最优者,我们有
[
a_1 + sum_{1le i < n} b_i ge b_1 + sum_{1le i<n} a_i
]

egin{equation}
sum_{2le i le n-1} b_i - ai ge 0 qquad (nge 2) label{condition}
end{equation}

为了方便,我们将 eqref{condition} 式左边记做 $Delta$,将 $1$ 到 $2n$ 的和记做 $S$,将 Alice 所得的 $n$ 个数之和记为 $S_A$,即
[
S_A = b_n + sum_{2le ile n} a_i
]
现在问题转化为

Alice 如何分组才能在满足 eqref{condition} 式的前提下使得 $S_A$ 最大?

我们有
[
S_A = (S -Delta + a_n + b_n - a_1 - b_1)/2
]

观察可知,对于 $nge 2$,若 $n$ 为偶数,$a_n$、$b_n$ 取最大的两个数,$a_1$、$b_1$ 取最小的两个数,$Delta$ 的值可取到 $0$;当 $n$ 为奇数时,同样使 $a_n$、$b_n$ 取最大的两个数,$a_1$、$b_1$ 取最小的两个数,此时 $Delta$ 的值可取到 $1$,并且这是此时的最优结果,理由是:当且仅当按上述方法取值时,$a_n + b_n - a_1 - b_1$ 的值最大。

原文地址:https://www.cnblogs.com/Patt/p/8590297.html