zoukankan      html  css  js  c++  java
  • hdu 4033 Regular Polygon (二分)++++++

    <a href="http://acm.hdu.edu.cn/showproblem.php?pid=4033">http://acm.hdu.edu.cn/showproblem.php?pid=4033</a> 
    
    思路:二分  
      先找 两边之和的最小max 和两边只差的最大 min 则边的长度 L 必然 min<l<max 
      然后二分求解
     注意啊,一开始定义 eps 是为e-6,wa 改为e-8 ac 
     
    #include<stdio.h>
    #define N 1000
    #include<math.h>
    #define eps 1e-8
    const double pi=2*acos(-1);
    double a[N];
    int main()
    {
        int T,l,i,n;
        scanf("%d",&T);
        for(l=1;l<=T;l++)
        {
            scanf("%d",&n);
            for(i=1;i<=n;i++)
              scanf("%lf",&a[i]);
              a[n+1]=a[1];
              double min=-1,max=9999999;
              for(i=1;i<=n;i++)
              {
                  double  temp=a[i]+a[i+1];
                  if(max>temp)max=temp;
                  temp=fabs(a[i]-a[i+1]);
                  if(min<temp)min=temp;
                  //printf("%lf %lf  12122\n",min,max);
              }
              int f=0;
              double mid;
     
              while(max-min>eps)
              {
     
                   mid=(min+max)/2;
                  double sum=0;
                  for(i=1;i<=n;i++)
                  {
                      sum+=acos((a[i]*a[i]+a[i+1]*a[i+1]-mid*mid)/(2*a[i]*a[i+1]));
                  }
                  //printf("%lf %lf\n",sum,pi);
                  if(fabs(pi-sum)<=eps)
                  {
     
                      f=1;
                      break;
                  }
                  else
                  if(sum-pi>eps)
                  {
                      max=mid;
                  }
                  else
                  if(pi-sum>eps)
                  {
                      min=mid;
     
                  }
     
              }
              if(f)printf("Case %d: %.3lf\n",l,mid);
              else printf("Case %d: impossible\n",l);
        }
    }
    

      

  • 相关阅读:
    EBS R12.2 运行请求出错
    仿ORACLE的TRUNC函数
    EBS职责清单(Responsibility)
    Oracle 11G Client 客户端安装步骤
    UltraIso-写入硬盘映像
    EBS-WIP完工入库
    LeetCode 2 两数相加
    LeetCode 1.两数之和
    装饰器示例
    爬虫day1
  • 原文地址:https://www.cnblogs.com/acSzz/p/2433680.html
Copyright © 2011-2022 走看看