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/n
は 1/(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 がきれいに解けてうれしい。なんと青パフォでございました。