除了第一列的方块都能这样操作,问最后方块的最小高度是多少。
思路:
可以二分最大高度是多少,那么每次可以将前缀大于这个高度的块填入空缺中。
等价于最大前缀平均值。
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 7;
int main() {
int T;scanf("%d",&T);
while(T--) {
int n;scanf("%d",&n);
ll sum = 0;
for(int i = 1;i <= n;i++) {
int x;scanf("%d",&x);
sum += x;
}
if(sum % n == 0) {
printf("%lld\n",sum / n);
} else {
printf("%lld\n",sum / n + 1);
}
}
return 0;
}