(货仓选址问题)在数轴上选一点,使得该点到其他点的距离和最小
结论:选择该组数字的中位数即可,
一共n个数,当n为奇数时,中位数【(n+1)/2】,当n为偶数时,a【(n+1)/2】~a【(n+1)/2+1】之内的数皆可

这个题目出现至少,八成就是二分
那么证明下天数是分成两段的
设第x天恰好(最少)满足要求,那么第x+1天,有一个苗增高导致不完美,那么我们可以用减一的办法让它恢复
这样x后面的天都可以变成腕足条件的
所以二分天数是可以的

(这个应该是最短的正常c++代码)
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
ll n,l,r,mid,a[N],b[N];

bool ok(ll x){
	for(int i=1;i<=n;i++){
		b[i]=a[i]+x/n+(x%n>=i);
	} 
	sort(b+1,b+1+n);
	ll res=0;
	for(int i=1;i<=n;i++) res+=abs(b[i]-b[(n+1)/2]);
	return res<=x;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	l=1, r=1e14;
	while(l<=r){
		mid=(l+r)/2;
		if(ok(mid)) r=mid-1;
		else l=mid+1;
	}
	cout<<l;
	return 0;
}
创作不易点个赞呗