首页 > 代码库 > POJ 1905 Expanding Rods (二分+计算几何+精度处理)
POJ 1905 Expanding Rods (二分+计算几何+精度处理)
题目地址:POJ 1905
用二分枚举h,然后判断弧长是否符合条件。重点还是在精度问题上,具体看代码吧。。
#include <iostream> #include <string.h> #include <math.h> #include <queue> #include <algorithm> #include <stdlib.h> #include <map> #include <set> #include <stdio.h> using namespace std; #define LL __int64 #define pi acos(-1.0) const int mod=9901; const int INF=0x3f3f3f3f; const double eqs=1e-6; bool Judge(double f1, double f2) { return f2-f1>1e-4; } bool judge(double f1, double f2) { return fabs(f1-f2)<eqs; } double bin_search(double lenth, double L) { double low=0, high=L/2, mid, r; while(Judge(low,high)){ mid=(low+high)/2; r=(4*mid*mid+L*L)/(8*mid); if(2*r*asin(L/(2*r)) < lenth) low=mid; else high=mid; } return mid; } int main() { double L, c, n, lenth; while(scanf("%lf%lf%lf",&L,&c,&n)!=EOF&&L>=0){ lenth=(1+n*c)*L; printf("%.3f\n",bin_search(lenth, L)); } return 0; }
POJ 1905 Expanding Rods (二分+计算几何+精度处理)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。