题目链接
102576L
题解
题意
n 个箱子,k把银钥匙,1把金钥匙,每个箱子需要一定时间打开,只有金钥匙可以多次使用,求最短时间。
思路
按箱子打开的时间排序后,用银钥匙开启耗时较多的k个箱子,用金钥匙开始耗时较少的剩余箱子,比较一下银钥匙开启的箱子中耗时最久的和金钥匙开启所有箱子所用的时间,较长的时间即为所求结果。
AC代码
#include <bits/stdc++.h>
using namespace std
;
using ll
= long long;
int const N
= 1e6 + 19;
ll a
[N
];
int T
;int n
, k
;
ll ans
;
int main() {
scanf("%d", &T
);
while (T
--) {
ans
= 0;
scanf("%d%d", &n
, &k
);
for (int i
= 1; i
<= n
; i
++) scanf("%lld",a
+ i
);
sort(a
+ 1, a
+ 1 + n
);
for (int i
= 1; i
<= n
- k
; i
++) {
ans
+= a
[i
];
}
printf("%lld\n", max(ans
, a
[n
]));
}
return 0;
}