poj 1905 (二分查找)

链接:poj 1905

截取自某大牛的blog,详情请关注:链接:Enumz

题意:一根两端固定在两面墙上的杆长度为L,受热弯曲后变弯曲,

长度L′=(1+nc)*L,求前后两个状态的杆的中点位置的距离

分析:设L′对应的半径为r,弧长为2α,要求的距离为x

根据直角三角形的性质可得:

根据弧长公式L′=2αr可得

有勾股定理得出:

代入得:

其为单调函数,二分求解即可。

PS:卡精度 特判若输入存在0,则直接输出0.000

#include<stdio.h>
#include<math.h>
#define eps 1e-6
double l,s;
double bin_search(double low,double high)
{
    double mid;
    while(high-low>eps){
        mid=(low+high)/2;
        double temp=(l*l/4+mid*mid)/mid*asin(mid*l/(l*l/4+mid*mid));
        if(temp>s)
            high=mid;
        else
            low=mid;
    }
    return mid;
}
int main()
{
    double c,n;
    while(scanf("%lf%lf%lf",&l,&n,&c)!=EOF){
        if(l==-1&&n==-1&&c==-1)
            break;
        if(l==0||n==0||c==0){
            printf("0.000\n");
            continue;
        }
        s=(1+n*c)*l;
        double ansH=bin_search(0.0,l/2);
        printf("%.3lf\n",ansH);
    }
    return 0;
}
时间: 2024-10-08 01:37:02

poj 1905 (二分查找)的相关文章

poj 3122 (二分查找)

链接:poj 3122 题意:我生日派对时,准备了n个圆柱形的pie,半径比一定相同,但高都为1, 邀请了f个朋友,加上自己一共f+1人,需要将n个pie分给f+1个人 要求:每个人分得的pie尺寸要一样大, 并且同一个人所分的pie要是从同一个pie上得到的,n个pie分完后可以有剩余 求:每个人最多可以分多少 分析:因为同一个人所分的pie都来自同一个pie, 若每个人所分的最大体积为a,那么比a小的pie肯定得舍弃. 将每个人最多分得的pie看成半径为r的圆柱,则最大尺寸为PI*r*r*1

LightOJ 1307 Counting Triangles 二分查找

[题解整理]二分题 题目类型: 二分查找: 二分答案. 大致解题思路: 查找注意有序和返回值: 浮点数注意精度: 整数注意返回值,建议另外维护一个变量,用于储存可行解. 题目 分类 传送门 WA点 poj 2785 二分查找 题解 lightoj 1088 二分查找 题解 lightoj 1307 二分查找 题解 longlong poj 2456 整数二分答案 题解 poj 3104 整数二分答案 题解 poj 3258 整数二分答案 题解 poj 3273 整数二分答案 题解 lightoj

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> #includ

poj 2452(RMQ+二分查找)

题目链接: http://poj.org/problem?id=2452 题意:在区间[1,n]上找到满足 a[i]<a[k]<a[j] (i<=k<=j) 的最大子区间 (j-i)如不存在输出 -1. 思路:枚举i,找到 i右边第一个不大于(不是小于) a[i]的数a[k](二分查找+RMQ某段区间的最小值是否小于a[i].最后确定到一个点),于是我们可以得到在区间[i,k-1]范围内的数都会大于 a[i] ,所以对于下标i,它对应的最长区间必定在[i,k-1]之间. 所以,我们

poj 1905 Expanding Rods (数学 计算方法 二分)

题目链接 题意:将长度为L的棒子卡在墙壁之间.现在因为某种原因,木棒变长了,因为还在墙壁之间,所以弯成了一个弧度,现在求的是弧的最高处与木棒原先的地方的最大距离. 分析: 下面的分析是网上别人的分析: 设弦长为L0(即原长),弧长为L1=(1+n*C)*l0,目标值为h,半径为R,弧所对圆心角为2θ(弧度制).可以得到以下方程组:圆的弧长公式:L1=2θR三角函数公式:L0=2*R*sinθ,变换得θ=arcsin(L0/(2*R))勾股定理:R^2=(R-h)^2+(0.5*L0)^2,变换得

poj 1151 Atlantis 二分查找+离散化

Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17464   Accepted: 6654 Description There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of

POJ 1064 Cable master(二分查找+精度)(神坑题)

POJ 1064 Cable master 一开始把 int C(double x) 里面写成了  int C(int x) ,莫名奇妙竟然过了样例,交了以后直接就wa. 后来发现又把二分查找的判断条件写错了,wa了n次,当 c(mid)<=k时,令ub=mid,这个判断是错的,因为要找到最大切割长度,当满足这个条件时,可能已经不是最大长度了,此时还继续缩小区间,自然就wa了,(从大到小递减,第一次满足这个条件的值,就是最大的值),正确的判断是当 c(mid)<k时,令ub=mid,这样循环1

POJ 1905 Expanding Rods 浮点数二分

Expanding Rods Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11145   Accepted: 2879 Description When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. Whe

POJ 2289--Jamie&#39;s Contact Groups【二分图多重匹配问题 &amp;&amp;二分查找最大值的最小化 &amp;&amp; 最大流】

Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 6902   Accepted: 2261 Description Jamie is a very popular girl and has quite a lot of friends, so she always keeps a very long contact list in her cell phone. The con