ABC145 C - Average Length

備忘録

問題

"use strict"
 
function dist(a, b){
  const xa = a.trim().split(' ').map(Number)[0];
  const ya = a.trim().split(' ').map(Number)[1];
  const xb = b.trim().split(' ').map(Number)[0];
  const yb = b.trim().split(' ').map(Number)[1];
  const X = xa - xb;
  const Y = ya - yb;
 
  return Math.sqrt(Math.pow(X, 2) + Math.pow(Y, 2))
}
 
function Main(input) {
  input = input.trim().split('\n');
  const N = Number(input[0]);
  const XY = input.slice(1, input.length);
  
  let sum = 0;
  for(let i=0; i<N; i++){
    for(let j=0; j<N; j++){
      let a = XY[i];
      let b = XY[j];
      sum += dist(a, b);
    }
  }
 
  console.log(sum/N);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

考え方

N1≦N≦8で、全検索してもLTEにならない。
愚直にforを二つ重ねて、全パターンの2点間の距離を算出。
これらの2点間のパターンはN回出てくるので、最後に平均化することで答えが出る?
(この辺をちゃんと理解できていない)

参考

【AtCoder Beginner Contest 145】C – Average Length | アルゴリズムロジック