Codeforces Round #609 (DIV 2) D. Domino for Young

题目

我对官方题解的理解。

断言:Young 图能被多米诺骨牌填满的充要条件是:将 Young 图棋盘染色后,黑白格子的数量相等。

显然,此条件是必要的,下面证明它也是充分的。

我们用每一列的高度来表示一个 Young 图。

下面叙述一种用多米诺骨牌填充 Young 图的方法。

为了方便描述,把最右侧的那一列称为第一列,第一列左边的那一列称为第二列,以此类推。
下述方法保证:若 Young 图里的某个格子 $x$ 被多米诺骨牌所覆盖,则 $x$ 所在列中在 $x$ 上方的所有格子也被多米诺骨牌覆盖了。
显然,满足这个条件的填充方法总是存在的。下文中,我们把被多米诺骨牌覆盖了的格子看做是被删除了。

从右往左看 Young 图的每一列。

  1. 若第一列的高度是偶数,则把它删除。例子:5 4 3 2 2 变成 5 4 3。若第一列的高度是奇数,则把这一列除了最底下的那一块之外的部分删除。例子:5 4 3 变成 5 4 1

  2. 此时第1列高度是1,若第2列高度是奇数,则一定可以把这两列都填满并删除,回到第1步。例子:5 3 1 变成 5。若第2列的高度是偶数,则把第2列删到只剩下最底下的两格,转第3步。例子:5 4 1 变成 5 2 1。

  3. 若第三列的高度和第二列的高度奇偶性相同,先把它的高度降为和第二列相同,再把第二列和第三列的高度都降为1,再把第一列和第二列删除。转第2步。

  4. .....

按上述方法,最后 Young 图要么被删空,要么变成形如 $k, k - 1, dots, 2, 1$,而这样的 Young 图中黑白格子的数量一定不相等。也就是说如果最初的 Young 图经棋盘染色后黑白格子数量相等,最后一定会被删空,换言之,一定能被多米诺骨牌填满。至此就证明了断言。

设输入的 Young 图经棋盘染色后有 $B$ 个黑格子和 $W$ 个白格子。显然,能填入的多米诺骨牌数量不超过 $min(B, W)$。可以证明,一定能填入 $min(B, W)$ 个多米诺骨牌。

下面证明:形如 $k, k - 1, dots, 2, 1$ 的 Young 图满足条件。

0
-----------
0
1 0
-----------
0
1 0
0 1 0
-----------

上图中 0 代表白色格子,1代表黑色格子。不失一般性,假设左上角的格子染成白色,这时白格子比黑格子多。对 $k$ 用归纳法。设 $k = n$ 时结论成立,则 $k = n + 1$ 时比 $k = n$ 时多出了最下层的一排格子,这一层格子是黑白相间的且最右侧的格子是白的,因此这一层里的每个黑格子都可以找到一个相邻的白格子与之配对。

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