diary are the Feru

痴呆防止に書きます

6/21

東京でグリーやってる友達がジョイントコンサートでこっち来てるというから聞きに行こうかと思ったけどチケット制で思ったよりガチな感じだったから行くのやめて引きこもってた。

Yoを導入した。IDはFERUです。連打してブロックしてまた連打するの不毛すぎる。

AtCoderで初心者向けのコンテストがあるというので挑戦してみた。最近プログラミングを始めた友達に触発されてる。

http://abc011.contest.atcoder.jp/submissions/all?user_screen_name=Feru54604
解いた結果こんな感じ。4問中3問解けた。Dは部分点。

Aは問題なし。Bはtransformの使い方をめっちゃググった。
Cは結構考えた。まずNG数字が3つ連続してるときはダメで、それ以外の場合はNから3ずつ引いて行く。NG数字にぶつかったら1戻ってまた3ずつ引いていく。これを繰り返して100回以内に0にできるかを判定。これでいけた。こんな単純でいいのか?と迷ったけどベストな解法だったっぽい。

Dは簡単に並び替えの問題に持って行けた。まず(X,Y)に右への移動と左への移動が何回で到達できるかを調べて残りの移動は「右左」「上下」で埋める。この残りの移動における「右左」の回数を変化させれば全通りの上下左右への移動回数が出てくる。

あとは並べ方(上+下+左+右)!/(上!下!左!右!)をそれぞれ計算して足して4^Nで割っておしまい。なのだがこの計算でオーバーフローだがアンダーフローだかしてNが大きくなるとうまくいかなかった。計算順序を変えればいけたのだろうか。

動的計画法やら競技プログラミングにおける定石を知らなかったからこそ正解に近づけた感はある。あんまりガチでやろうとは思わないな。