0

2020 ISL C1

12
0

以下は僕の解答であり、最善であるとは限りません。逆にいろいろと教えてほしいです。
この記事の目的は個人的なメモでありながら、気になる方々のために出来るだけ思考をわかりやすく説明することです。
よろしくお願いします :)

問題

2020 ISL C1

nを正の整数とする。数列1,2,...,nの並び替えa1,a2,...,anで以下を満たすものの個数を求めよ:
a12a23a3nan

考察

まずは小さいnで試してみよう:
1: P(1)=1通り
2: 122212 でP(2)=2通り。
3:んー ちょっと大変だから表でも作ってみよう。

n=3 n=3

縦で何番目に、横で何を選ぶのかを決める。これから使う座標は(縦、横)とする。
例として、 (1,1), (2,3),(3,2) は a1=1,a2=3,a3=2を意味する。
つまり、各行と列からちょうど一回ずつ数を選ばないといけない。

(3,1)から始めることはできるか?
できないね。列1にたどり着けない。つまりa13と。。。

逆に数1はどの列に入るんだろう?
うんa1=1a2=1が示せるね。

同じように他の数も制限できないかな。。。
もっと大きいnで試そう。

n=8 n=8

通れるマスを探してみたら綺麗な形になった!
これがn x nのマスにも一般化出来たら解が見つかりそう!
(各行、各列からちょうど一つずつ塗られているマスを選ぶ方法の数)

証明はできそうだし先に解をさがしてみよ。k x kを考える。
帰納法とかだよね、たぶん。

右下に行k+1と列k+1のために足してみて、P(k+1)を求める。
ん?k x kに求めたP(k)通りは全部マス(k+1,k+1)に行く。。。つまり(k+1,k+1)にたどり着くにはP(k)通りある。
じゃあ(k+1,k)にたどり着くには?
(k,k+1)を通らないといけない。じゃあ(k1,k1)か(k1,k2)を通らないといけない。
つまり、P(k1)通りだね。

つまり、P(k+1)=P(k)+P(k1)
フィボナッチじゃーん。

証明の記述は省かせてもらいます。

何を学ぶか

・表に書くとわかりやすい(特にC分野なんだし。。。)

・わかりやすいけど、表だけにとらわれすぎるのも良くない。
実際、この問題はnn番目 (他のを決めるのにP(n1))

nn1番目、n1n番目に来ることを示せば (他のを決めるのにP(n2))
あとは図から離れてみると普通にP(n)=P(n1)+P(n2)だとわかる。

すると、証明の部分が完全に図なしで簡単にまとめられた。

・似たような問題は意外と帰納法でしめせるから、アイデアが浮かばなければ最初のほうにP(n+1)をいじってみるといいかも。

投稿日:4月12日
更新日:31日前
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

数オリが好きです。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 問題
  2. 考察
  3. 何を学ぶか