2212 센서

하나의 기지국이 수신 가능한 영역은 다음과 같이 정의할 수 있다. 집중국에 포함된 가장 우측의 센서의 위치 - 집중국에 포함된 가장 좌측 센서의 위치 따라서 결국 해당 집중국에서의 최대 - 최소의 값이 영역의 길이가 된다.

x, y가 하나의 집중국에 포함되고, x가 제일왼쪽, y가 제일 오른쪽의 센서일 경우 arr[y] - arr[x]이 수신 가능 영역이다. 이는 다음과 같이 표현되기도 한다. arr[y] - arr[x] = arr[y] + (arr[y - 1] - arr[y - 1]) + ... (arr[x + 1] - arr[x + 1]) - arr[x]

만약 하나의 집중국이 [1, 2, 3, 4] 센서를 포함한다면 수신 가능 영역의 길이는 다음과 같다. 4 - 1 = 3, 이를 길게 풀면 4 - 1 = 4 - 3 + 3 - 2 + 2 - 1 = 4 + (-3 + 3) + (-2 + 2) - 1 = 3 으로 결국 하나의 집중국에서 포함된 각 영역의 모든 diff의 합은 최대 - 최소의 값과 동일하다.

우선 계산하기전에 각 모든 센서에 집중국 존재한다고 생각하고 센서를 합치며 집중국을 줄여나가보자

[예시] b = 6, k = 2, 센서 = 1 6 9 3 6 7일때 오름차순으로 정렬하면 1 3 6 6 7 9이고 diff는 2 3 1 0 2가 된다. 이를 다시 오름차순 정렬하면 0 1 2 2 3이 된다. 최소의 수신 가능 영역 길이의 합을 구해야 하기때문에 낮은 값부터 더해가보자

결국 구간 [0 ~ n - k]의 오름차순 정렬한 diff 값을 더하게 되면 최종적으로 k개의 집중국을 설치했을때 최소의 영역의 길이값을 구할 수 있다.