题解:
乍一看去,我去,这什么玩意,题都读不懂 但仔细看看,这不就反过来合并果子嘛,因为我们要/k,所以从大到小排列,这里就要引入priority_queue以降低复杂度
代码:
#include<bits/stdc++.h>
using namespace std;
int n,x,ans,k;
priority_queue<int,vector<int>,less<int> >q;
int main() {
scanf("%d%d",&n,&k);
for(int i=1; i<=n; i++) {
scanf("%d",&x);
q.push(x);
}
while(q.size()>=2) {
int a=q.top();
q.pop();
int b=q.top();
q.pop();
ans=((a+b)/k);
q.push((a+b)/k);
}
printf("%d",ans);
return 0;
}