我们充分利用人类智慧
查看原帖
我们充分利用人类智慧
469470
EurekaStriker楼主2024/7/1 08:08

本来打算写模拟退火的,结果你告诉我这这暴力枚举就过了???

我的check还写了二分快一点呢QAQ

#include<bits/stdc++.h>
using namespace std;
int n,a[1010],l,r;
double ans;
bool check(double x){
	for(int i=1;i<=n;i++){
		int ans=0;
		l=0,r=10000;
		while(l<r){
			int mid=(l+r)>>1;
			if(ceil(x*mid)>a[i]+1)
				r=mid;
			else if(ceil(x*mid)<a[i]+1)
				l=mid+1;
			else{
				ans=mid;
				break;
			}
		}
		if(ans==0)
			return 1;
	}
	return 0;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	ans=a[1]+1;
	while(ans>=0){
		if(!check(ans)){
			cout<<ans;
			return 0;
		}
		ans-=5e-6;
	}
}
2024/7/1 08:08
加载中...