rt,如果不能二分答案有证明 or HACK 嘛 QWP。
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int n;
double a[N] ,ans;
const double eps = 0.00000001;
inline int check(double mid){
for(int i = 1;i <= n;i ++){
double t = ceil(mid * i) - 1;
if(t > a[i]) return 0;
if(t == a[i]) continue;
if(t < a[i]) return -1;
}
return 1;
} int main(){
cin >> n;
for(int i = 1;i <= n;i ++) cin >> a[i];
sort(a+1,a+1+n);
double l = 0.0000001 ,r = 1000;
while(r - l >= eps){
double mid = (l + r) / 2.0;
int flag = check(mid);
if(flag == 1) l = mid + 0.0000001 ,ans = mid;
else if(flag == 0) r = mid - 0.0000001;
else ans = mid, l = mid + 0.0000001;
}
printf("%.7lf\n",ans);
return 0;
}