🗂
ABC414D
問題
解法
M=1 の場合
簡単のため,
基地を設置するベストな場所は,左端の家と右端の家の中点となり,一意に定まる.
M \geq 1 の場合
次に,
ブロックごとに,基地のベストな位置は一意に定まる.
これは
後は,どの様にブロックに分割するのが最適かを考える.
仕切りの部分は,電波が届かなくてよいから,家と家の間の距離が大きいほうから
コード
main.cpp
int main() {
ll n, m;
cin >> n >> m;
vll a(n); rep(i,n) { cin >> a[i]; }
sort(all(a));
ll s = 0;
vll diff;
rep(i,n-1){
diff.push_back(a[i+1] - a[i]);
s += a[i+1] - a[i];
}
sort(rall(diff));
rep(i,m-1){// rem: m-1
s -= diff[i];
}
cout << s << endl;
return 0;
}
Discussion