思路~
注意1.多米诺骨牌高度至少为1
2.能推倒另一块骨牌高度至少比路径多1(骨牌高度为整数)
排下序,前k-1次推倒k-1个最高的,高度为k-1。最后一次推倒剩余n-(k-1)个,高度为距离和+n-(k-1),设距离和为sum,即sum+n-(k-1)。
总高度 k-1+ sum+n-(k-1) => sum+n注意输出long long
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
typedef long long ll;
int main(){
int t,n,k;
ll sum;
int a[100050];
cin>>t;
while (t--) {
cin>>n>>k;
sum=0;
for (int i=0; i<n-1; i++) {
cin>>a[i];
}
sort(a, a+n-1);
for (int i=0; i<n-k; i++) {
sum+=a[i];
}
cout<<sum+n<<endl;
}
return 0;
}