Mitsubachiのメモ

組合せ論をしています

AGC030-C(Coloring Torus) 解説

 

 

問題概要

1000以下の整数Kが与えられるので500以下の整数nを自由に選び、以下の条件を満たすK色を使った縦横nマスの塗り方を構築せよ。

同じ色の2マスを選んだ時、選び方によらず、その2マスそれぞれに隣接するマスの色の種類と回数は等しい(ただし、1列目のマスにとって左に隣接するマスはn列目のマスとする。他の方向も同様。)

 

ステップ1 Kに対応するnとは

まず、K1000以下ですが、nの上限は500です。つまり、Kに対して、\frac{K}{2}色での良い塗り方があるのではないでしょうか。K2で割り切れない時は切り上げてよいでしょう。制約から察せる気がしますが、これは正解です。

 

ステップ2 Kを場合分けしてみる その1:Kが偶数

K2で割り切れる場合を考えてみましょう。ステップ1に従ってn=\frac{K}{2}とすると、1行あたり\frac{K}{2}色があるとよさそうです。つまり、左から奇数列目には1から\frac{K}{2}の数を入れ、偶数列目には\frac{K}{2}+1からKの数を入れるようにすればよさそうです。

f:id:Mitsubachi88:20200626225616p:plain

K=10,12

この時、K=12の場合は成り立っているのが分かりますが、K=10の場合は成り立っていません。(1列目の831つ隣接していますが、3列目の83に隣接していません。)

同様に考えると、\frac{K}{2}2で割り切れる場合は成り立ちますが、\frac{K}{2}2で割り切れない場合は成り立ちません。

そこで、\frac{K}{2}が奇数の場合、マス目の右に2列目をつけても、縦に1行余ってしまいます。しかし、n=\frac{K}{2}とする場合の構築はK=12の場合を真似るならば難しそうです。

なので、\frac{K}{2}が奇数の場合はn=\frac{K}{2}+1とする方針がよさそうです。これはK=998の時でも、[n=500]となり、制約的には問題ありません。

ここで、Kが奇数の場合を考えましょう。K-1色の塗り方を元にする場合、今回の解法では同じ色が複数回登場し、その一部を別の色にするという形なので難しそうです。それに対して、K+1色の塗り方を元にする場合、色を1つ選び、その色のマスを全て塗り替えるという手法ができそうです。今回はこちらを採用しましょう。

現状としてはK4で割り切れる場合の構築は完了しています。

 
ステップ3 Kを場合分けしてみる その2:K4で割った余りが3

K4で割り切れる場合の構築を元にして考えたいですが、現状ではどの数字を変えてもうまくいきません。ここで、斜め線を列挙することで列状になるような塗り方を考えてみましょう。

f:id:Mitsubachi88:20200626233541p:plain

左上から右下への斜め線の色に周期性がある塗り方(6\times6)

どこかで見たことがある感じの模様ですね。この塗り方での色に数字を対応しても成り立つのが分かります。また、それぞれの斜め線を交互に違う色にしても成り立つことが分かります。また、斜め線の色は上図の場合6種類で、全ての斜め線を交互に違う色にすると6\times2=12色を使えることができます。これを利用するとK4で割り切れるとき、n=\frac{K}{2}で構築することが可能となります。

では、どのようにこれを作るかというと、対角線に2種類の色が現れるように各列をスライドすればよいです。この後、対角線を全て同じ色にすることで、4で割って3余る場合の構築が可能です。

これはK4で割り切れるもしくは4で割って3余るときには、Kがどんな数であろうとこの方法を使用できることが分かります。

f:id:Mitsubachi88:20200626234120p:plain

K=12,11(K=118がないです。)

現状としてはK4で割り切れる場合、4で割って3余る場合の構築は完了しています。

K4で割って2余る場合も同様に考え、そこから4で割って1余る場合を作ることができれば解けそうです。

 

ステップ3 Kを場合分けしてみる その3:K4で割った余りが2,1

まず、K4で割って2余る場合の構築を考えましょう。n=\frac{K}{2}の構築で斜め線を利用するものを考えてもうまくいきません。

f:id:Mitsubachi88:20200626235357p:plain

(5\times5)でのマス目(成り立っていません)

端にある6と内側にある6では隣接しているマスの色が違います。また、違うところを別の色にしてもうまくいきません。(うまくいったとしても、K4で割って2余る場合しか構築できない)

なので、n=\frac{K}{2}+1としましょう。ここでは具体的にK=10とします。K=12の場合のマス目から2色減らすことが目標となります。ステップ3での最初の図において、このような事実が分かっています。『また、それぞれの斜め線を交互に違う色にしても成り立つことが分かります。』

これを言い換えると、斜め線に2色が含まれている場合、それを全て同じ色にしても成り立ちます。これによって、色の種類を1減らすことができます。これを2回すればよく、これは十分余裕です。

f:id:Mitsubachi88:20200627001149p:plain

K=12,10(K=106,12がないです。)

これによってK4で割って2余る場合の構築はできました。4で割って1余る場合の構築はもう12色の斜め線を同じ色にすればよいです。先ほどと同様、K4で割った余りが21なら、どんなKでもこの手法が使用できることが分かります。

f:id:Mitsubachi88:20200627001325p:plain

K=10,9(K=98がないです。)

ここまでの議論より、K4で割った余りがなんであろうと構築が可能であることが分かり、この問題を解くことができました。

 

感想

K4で割った余りが0,3の場合はすぐわかりましたが、2,1の場合が難しかったです。

数学が好きなのでこういう問題は楽しかったです。