Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Regular Contest 163

3完3WA

各問題

A - Divide String

Nがたかだか2000なので、s[0] <= s[i] である i (1 <= i < N) について、s[0, i) < s[i, N) であるかどうかをすべてチェックすればよいです。

s[0, i) < s[i, N)s[0, i) <= s[i, N) として 1WA...。

B - Favorite Game

まず、うごかすのは A[0] と A[1] のみでよいです。

で、A[2] より後ろをソートして、i (0 <= i < n - 1 - m) について A[0] = A[2 + i] および A[1] = A[2 + M - 1 + i] とするコストがいくつになるかを全探索すればよいです。

C - Harmonic Mean

先頭の2は固定として、あとは残り N - 1 個で 1/2 を作ればよく、1/n1/(n + 1) + 1/(n * (n + 1) と表すことができるので、'1/2` を分子が小さいものを優先して(重複しないよう気を付けて)分解していけばよいです。

1/2 -> 1/3 + 1/6 -> 1/4 + 1/6 + 1/12 -> 1/5 + 1/6 + 1/12 + 1/20 -> (1/5 を分解すると 1/6 ができてしまうので 1/6 のほうを分解する) -> 1/5 + 1/7 + 1/12 + 1/20 + 1/42 -> 1/6 + 1/7 + 1/12 + 1/20 + 1/30 + 1/42 、という要領です。

まとめ

C600 がきれいに解けてうれしい。なんと青パフォでございました。