1 条题解

  • 1
    @ 2024-1-12 13:13:02

    世界上最好的题解😄

    #include<bits/stdc++.h>
    using namespace std;
    const int N=10010;
    int n,k;
    double a[N];
    bool check(double x){
    	int cnt=0;
    	for(int i=1;i<=n;i++){
    		cnt+=int(a[i]/x);
    	}
    	return cnt>=k;
    }
    double bsearch(double l,double r){
    	for(int i=1;i<=100;i++){
    		double mid=(l+r)/2;
    		if(check(mid))l=mid;
    		else r=mid;
    	}
    	return l;
    }
    int main(){
    	double l=0,r=0;
    	cin>>n>>k;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		r=max(r,a[i]);
    	}
    	double ans=bsearch(l,r);
    	printf("%.2lf",int(ans*100)/100.0);
    	return 0;
    }
    

    看完别忘了点赞呦👍

    • 1

    信息

    ID
    573
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    6
    已通过
    4
    上传者