差分求助 WA Subtask1
查看原帖
差分求助 WA Subtask1
1037830
Ooj_bai楼主2024/6/30 21:09

乱搞做法,差分
赛时调不出来摆了
我的做法是利用
xik<α≤xi+1k(k∈N∗)\frac {x_i}{k} < \alpha \le \frac{x_i+1}{k} \quad (k \in N^*)
对每个aia_i求出对应的α\alpha 范围。最后用差分求出满足所有范围的α\alpha最大值。
代码如下。

#include<bits/stdc++.h>
using namespace std;
double ans=1e9,maxx;
int n,D[200000005],a[100005];
int main(){
	cout.tie(0);cin.tie(0); 
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		for(int j=1;j<=2*a[i];j++){
			double ihs=(a[i]+1.0)/j,ils=a[i]*1.0/j; 
			int hs=ihs*100003,ls=ils*100003;
			D[ls+1]++;D[hs+1]--;
		}
	}
	for(int i=1;i<=100003*100;i++){
		D[i]+=D[i-1];
		if(D[i]==n){
			maxx=max(maxx,i/100003.0);
		} 
	}
	cout<<fixed<<setprecision(10)<<maxx;
	return 0;
}
2024/6/30 21:09
加载中...