ARC068D - Card Eater

D - Card Eater

考えたこと

同じカードが3枚以上あれば,そのカードを3枚選ぶことで,2枚ずつ減らせる.この操作を繰り返せば,同じカードは2枚以下にできる.よって,すべてのカードは1枚 or 2枚であるとして良い(※ 1枚になるのは同じカードが奇数枚あったときで,2枚になるのは同じカードが偶数枚あったとき).

以下,すべてのカードは1枚 or 2枚とした上で考える.

Xが2枚あるとき,他のカードYと合わせて3枚選べば,X1枚を残すことができる(XYが1枚ずつ消える).特に,Yとしてダブっているものを選べれば,Yのダブりもなくせる.よって,Yとしてはダブっているものを優先して使うべきである.つまり,ダブリカードが2組からダブりなしカードが2枚できると考えてよい.

以上より,①ダブリカードが偶数組あれば,「ダブリ組数 + 元からダブりがない枚数」が答え.②ダブリカードが奇数組あれば,(ダブリ組数 - 1)のダブリなしカードと,1組のダブリカードができる.ダブリカードは,他のダブりなしカードを1枚犠牲にしてダブりなくできるので,「(ダブリ組数 - 1) + 元からダブりがない枚数」が答えとなる.

(※ ①は「カードの種類数」,②は「カードの種類数 - 1」と言い換えられる)


別解

公式解説の方法

最低限取り除かなければならないカードを「余分なカード」と呼ぶことにする.

余分なカード3枚を選べば,そのうち2枚を取り除ける.これを繰り返せば,余分なカードを2枚以下にできる.

Case. 1) 余分なカードが2枚のとき,①それが同一のカードXであれば余分でない分と合わせてXが3枚ある.よって,Xを3枚選べばXを1枚にできる.②異なるカードX, Yであれば,Xが2枚,Yが2枚ある.XXYかXYYとすれば,XとYを1枚にできる.

Case. 2) 余分なカードが1枚のとき,このカードをXとするとXは2枚ある.よって,任意のカードYと合わせてXXYを選ぶとXを1枚にできる.このとき,Yも消えてしまう.

以上が,解説で『操作は「 2 枚のカードを選んで取り除く」とみなしてほぼ構いません』といっている内容である.


あとは,Case. 1になるか,Case. 2になるかが判定できれば良い.

$N$が奇数であるから,カードが$k$種類あるとき,①$k$が奇数なら余分なカードは偶数枚,②$k$が偶数なら余分なカードは奇数枚ある.

よって,①はCase. 1) になり,②はCase. 2)になる.