1 条题解

  • 0
    @ 2026-7-31 10:56:49
    #include<bits/stdc++.h>
    using namespace std;
    #define eps 1e-12
    double H,h,D;
    double f(double x){
    	return D-x+H-(H-h)*D/x;
    }
    signed main(){
    	int t,i;
    	cin>>t;
    	while(t--){
    		cin>>H>>h>>D;
    		double l=(H-h)/H*D,r=D,m1,m2;
    		while(l+eps<=r){
    			m1=l+(r-l)/3.0;
    			m2=l+(r-l)/1.5;
    			if(f(m1)>=f(m2)){
    				r=m2;
    			}else{
    				l=m1;
    			}
    		}
    		printf("%.3f\n",f(l));
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    1861
    时间
    1000ms
    内存
    512MiB
    难度
    9
    标签
    递交数
    20
    已通过
    3
    上传者