关于一道站外题
查看原帖
关于一道站外题
804757
Light_Star_RPmax_AFO楼主2023/3/18 10:23

http://noi.openjudge.cn/ch0111/04/

#include <bits/stdc++.h>
using namespace std;
int N,K;
double l=0,r=0,a[10010],ans=0;
bool find(double ans){
	int sum=0;
	for(int i=1;i<=N;i++){
		sum+=a[i]/ans;
	}
	return sum>=K;
}
int main(){
	cin>>N>>K;
	for(int i=1;i<=N;i++)scanf("%lf",&a[i]),r=max(a[i],r);
	while(l<=r){
		double mid=(l+r)/2.0;
		if(find(mid))l=mid+0.01,ans=mid; 
		else r=mid-0.01;
	}
	printf("%.2lf",ans);
}
2023/3/18 10:23
加载中...