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$ 時多出了最下層的一排格子,這一層格子是黑白相間的且最右側的格子是白的,因此這一層里的每個黑格子都可以找到一個相鄰的白格子與之配對。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM