1 条题解
-
0
我太难了 这题居然是普及+/提高(绿题) 清华集训 2015 还有三分 废话少说,上代码
#include<bits/stdc++.h> #define MAXN 100000 using namespace std; int n; double H,h,D; double ask(double x) {//返回大的那种情况 if(x<=h*D/H) return x+(H-(H-h)*D/(D-x)); else return x-D+((D-x)*H/(H-h)); } void three_cut() {//三分,具体原理不懂可以去看模板题题解 double l=0,r=MAXN; while(r-l>=0.0000001) { double lmid=l+(r-l)/3; double rmid=r-(r-l)/3; if(ask(lmid)>ask(rmid)) r=rmid; else l=lmid; } printf("%.3lf\n",ask(l)); } int main(void) { scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%lf%lf%lf",&H,&h,&D); three_cut(); } return 0; }
- 1
信息
- ID
- 362
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者