HDU 4033

 1 /*
 2 http://acm.hdu.edu.cn/showproblem.php?pid=4033
 3 题意:正n边形里面有一个点,知道这个点到n个顶点的距离,要求这个正多边形的边长
 4 思路:在(0,20000)二分查找答案,用上余弦定理
 5 2017年02月26日19:38:14
 6 */
 7 #include <cstdio>
 8 #include <cmath>
 9 double len[110];
10 int n;
11 double pi=acos(-1.0)*2;
12 double ef(double l,double r){
13     if(r-l<1e-6)return -1;
14     double m=(l+r)/2;
15     double du=0;
16     for(int i=0;i<n;i++){
17         if(m>len[i]+len[(i+1)%n])return ef(l,m);
18         du+=acos((-m*m+len[i]*len[i]+len[(i+1)%n]*len[(i+1)%n])/(2.0*len[i]*len[(i+1)%n]));
19     }
20     if(du>pi){
21         if(m-l<1e-6 && du-pi<1e-5 && pi-du<1e-5)return l;
22         return ef(l,m);
23     }else{
24         if(r-m<1e-6 && du-pi<1e-5 && pi-du<1e-5)return l;
25         return ef(m,r);
26     }
27 }
28 int main(){
29     int t;
30     scanf("%d",&t);
31     for(int tt=1;tt<=t;tt++){
32         scanf("%d",&n);
33         for(int i=0;i<n;i++){
34             scanf("%lf",&len[i]);
35         }
36         double res=ef(0,20000);
37         printf("Case %d: ",tt);
38         if(res<0){
39             printf("impossible\n");
40         }else{
41             printf("%.3f\n",res);
42         }
43     }
44     return 0;
45 }
时间: 2024-08-26 23:19:37

HDU 4033的相关文章

【二分+计算几何】hdu 4033 Regular Polygon

[二分+计算几何]hdu 4033 Regular Polygon 题目链接:hdu 4033 Regular Polygon 题目大意 已知正多边形中的一个内点到所有顶点的距离,求多边形的边长. 二分问题一般都存在含有一个未知量的方程(等式关系),通过二分未知量的范围实现查找,这道题目的几何关系就是:知道一边,内角和(围着内点)等于360度.根据三角不等式确定边的二分范围,二分查找边使得内角之和为2π即可. 说一下思路 笔者根据第一条边和最后一条边确定二分边的范围,边确定由余弦定理能确定所有内

hdu 4033 2011成都赛区网络赛 余弦定理+二分 **

二分边长,判断最后内角和是否为2pi,注意l与r的选取,保证能组成三角形 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 #include<map> 8 using namespace std; 9 #define MOD 10000

hdu 4033 Regular Polygon 计算几何 二分+余弦定理

题目链接 给一个n个顶点的正多边形, 给出多边形内部一个点到n个顶点的距离, 让你求出这个多边形的边长. 二分边长, 然后用余弦定理求出给出的相邻的两个边之间的夹角, 看所有的加起来是不是2Pi. #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #includ

hdu 4033 二分几何

参考:http://blog.csdn.net/libin56842/article/details/26618129 题意:给一个正多边形内点到其他顶点的距离(逆时针给出),求正多边形的边长 二分多边形的边长 根据余弦定理求出A的角度,之后求出所有角度,加起来是否为360,小于则扩大,大于则缩小边 Sample Input 2 3 3.0 4.0 5.0 3 1.0 2.0 3.0 Sample Output Case 1: 6.766 Case 2: impossible 1 #includ

hdu 4034 Graph(深化最短路floyd)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 2188    Accepted Submission(s): 1101 Problem Description Everyone knows how to calculat

hdu 4034 Graph

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1650    Accepted Submission(s): 826 Problem Des

HDU 1431 素数回文(打表+技巧,最大回文素数为9989899!!!)

素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17512    Accepted Submission(s): 4033 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a

HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点对,然后判断最少有多少个坏点. 题解 :求每个点对的LCA,然后根据LCA的深度排序.从LCA最深的点对开始,如果a或者b点已经有点被标记了,那么continue,否者标记(a,b)LCA的子树每个顶点加1. #include<Bits/stdc++.h> using namespace std;

HDU 5542 The Battle of Chibi dp+树状数组

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:给你n个数,求其中上升子序列长度为m的个数 可以考虑用dp[i][j]表示以a[i]结尾的长度为j的上升子序列有多少 裸的dp是o(n2m) 所以需要优化 我们可以发现dp的第3维是找比它小的数,那么就可以用树状数组来找 这样就可以降低复杂度 #include<iostream> #include<cstdio> #include<cstring> #include