【排序】HDU-5777 domino
程序员文章站
2022-05-01 14:37:54
...
注解
1、排序。n张多米诺骨牌,但是每张骨牌的高度可以随意设定。保证k次推倒的情况下,所有骨牌都能倒下。求最小的高度和。
2、根据相邻骨牌的距离排序,选择距离最小的前n-k个骨牌推倒即可。总的高度最小和就是选中的距离加上骨牌的数目(因为每张骨牌的最小高度为1)。
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long int LL;
int main(){
int T;
cin>>T;
for(int i=1; i<=T; i++){
int n, k;
cin>>n>>k;
LL a[n-1];
memset(a, 0, sizeof(a));
for(int j=0; j<n-1; j++){
cin>>a[j];
}
sort(a, a+n-1);
LL ans = n;
for(int j=0; j<n-k; j++){
ans += a[j];
}
cout<<ans<<endl;
}
return 0;
}