AtCoder Beginner Contest 178の感想
具合が悪いのでさらっと書きます
100-200-0-400-0(3)-0でノーペナ3完700点。
B - Product Max
全通り試すと間に合わない。(B問題にしては厳しいね?)
負の数×負の数=正の数 だったりするので場合分けをしようか迷うが、よく考えると範囲の最大値・最小値の組み合わせをすべて試せばそのどれかが最大値となる。
が答え。
C - Ubiquity
考えられる数列の総数は通り。0を使わない数列は通り。9を使わない数列は通り。0も9も使わない数列は通り。
実はこれらの数値が求められれば、あとは包除原理で導出できる。が答え。
D - Redistribution
dpで解いた。
dp[i][j] := 数列の長さがiで、その総和がj
とする。遷移を簡単にするために、数列に0以上の整数、つまり3未満の数も含んでいいことにする代わり、答えを求めるときは数列の全要素に3を足したものとしてみる。
遷移は、dp[i+1][j] = dp[i][j] + dp[i][j-1] + ... + dp[i][0]
となる。実装時は累積和を使って右辺をで求める。
dp[i][S - 3 * i]
の総和が答え。
E - Dist Max
(追記:誤答の内容について)木の直径を求める感じで、「ある適当な点から一番遠い点」から一番遠い点までの距離を出力したがWAだった。2点間の距離は木ではなくグラフである。
Googleによると、45度回転させてマンハッタン距離をチェビシェフ距離に変換して軸ごとに見ると解けるらしい。やったことがないので解けませんでした。
ちなみに前にも45度回転させて考える問題を解けなかったので大反省。
F - Contrast
なんかAGCのA問題に出てきそうな問題。ちゃんと考えれば、元からソートされているのだから、Bを逆順にすればとなるような数字は高々1種類しかないので、その時に数字の位置をずらせるかどうかだけ考えればよいっぽい。
細かいところまでは詰めてないので穴があるかもしれません。
感想
寝不足は敵