きろく

特筆すべき記録のまとめ

AtCoder Grand Contest 032:B - Balanced Neighbors

問題

atcoder.jp

解法

頂点をいくつかのグループに分けるとき,全てグループに含まれる頂点の数字の和が S になるように N 個の頂点をグループ分けし,それらのグループを互いに全て結べば答えが求められる.N が偶数の時,(1, N), (2, N - 1), ... とグループ分けすることで S = N + 1 となり,N が奇数の時,(1, N - 1), (2, N - 2), ... , (N) とグループ分けすることで S = N となる.辺を張るのはある頂点とその頂点自身が属するグループ以外のグループに属する頂点とを結べばいい.O(N^2).

解答

atcoder.jp

f:id:babcs2035:20190325184808p:plain