きろく

特筆すべき記録のまとめ

AtCoder Grand Contest 001:C - Shorten Diameter

問題

atcoder.jp

解法

「直径が K より外の頂点を削除する」と「直径が K 以内の頂点を残す」のは同じなので,後者に置き換えて,残す頂点を最大化することを考える.

K が偶数の場合,各頂点から K / 2 以内の頂点を残すことになるので,全ての頂点について残す頂点の数を計算する.

K が奇数の場合,各辺の両端の頂点から (K - 1) / 2 以内の頂点を残すことになるので,すべての辺について残す頂点の数を計算する.

答えは N - (残す頂点の数) になる.O(N^2).

解答

atcoder.jp

頂点を削除するという方針で考えていて詰まってしまっていた.同値で置き換えるのも重要だと思った.

f:id:babcs2035:20181221152405p:plain