Miaomiao's Geometry

  HDU 4932  Bestcoder

Problem Description

There are N point on X-axis . Miaomiao would like to cover them ALL by using segments with same length.

There are 2
limits:

1.A point is convered if there is a segments T , the point is the
left end or the right end of T.
2.The length of the intersection of any two
segments equals zero.

For example , point 2 is convered by [2 , 4] and
not convered by [1 , 3]. [1 , 2] and [2 , 3] are legal segments , [1 , 2] and [3
, 4] are legal segments , but [1 , 3] and [2 , 4] are not (the length of
intersection doesn‘t equals zero), [1 , 3] and [3 , 4] are not(not the same
length).

Miaomiao wants to maximum the length of segements , please tell
her the maximum length of segments.

For your information , the point
can‘t coincidently at the same position.

Input

There are several test cases.
There is a number T (
T <= 50 ) on the first line which shows the number of test cases.
For each
test cases , there is a number N ( 3 <= N <= 50 ) on the first line.
On
the second line , there are N integers Ai (-1e9 <= Ai <= 1e9) shows the
position of each point.

Output

For each test cases , output a real number shows the answser. Please output three digit after the decimal point.

Sample Input

3

3

1 2 3

3

1 2 4

4

1 9 100 10

Sample Output

1.000

2.000

8.000

Hint

For the first sample , a legal answer is [1,2] [2,3] so the length is 1. For the second sample , a legal answer is [-1,1] [2,4] so the answer is 2. For the thired sample , a legal answer is [-7,1] , [1,9] , [10,18] , [100,108] so the answer is 8.

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 #include<iostream>
 5 #include<math.h>
 6
 7 using namespace std;
 8
 9 int main()
10 {
11     int cas,i,n,right,left;
12     double res,a[55],b[120];
13     cin>>cas;
14     while(cas--)
15     {
16         cin>>n;
17         int j=0;
18         for(i=0;i<n;i++)
19         {
20             cin>>a[i];
21         }
22         sort(a,a+n);
23         for(i=1;i<n;i++)
24         {
25             b[j++]=a[i]-a[i-1];
26             b[j++]=(a[i]-a[i-1]) /2 ;
27         }
28         sort(b,b+j);
29         int flag=0;
30         j=j-1;
31         res=(double)b[j];
32
33         while(1)
34         {
35             right =0; left=0;
36             flag=0;
37             for(i=1;i<n;i++)
38             {
39                 if(i==n-1) continue;
40                 if(a[i]-res<a[i-1] && a[i]+res>a[i+1])
41                 {
42                     flag=1;
43                     break;
44                 }
45                 if(a[i]-res>=a[i-1])
46                 {
47                     if(right==1)
48                     {
49                         if(a[i]-a[i-1]==res) {left=1; right=0; }
50                         else if(a[i]-a[i-1]>=2*res) { left=1; right=0; }
51                         else if(a[i]+res<=a[i+1]) { left=0; right=1; }
52                         else flag=1;
53                     }
54                     else { left=1; right=0; }
55                 }
56                 else if(a[i]+res<=a[i+1]) {
57                     right=1;
58                     left=0;
59                 }
60
61             }
62             if(flag==1) {
63                 j--;
64                 res=b[j];
65             }
66             else
67             {
68                 printf("%.3lf\n",res);
69                 break;
70             }
71         }
72     }
73     return 0;
74 }

Miaomiao's Geometry

时间: 2024-11-07 17:57:27

Miaomiao's Geometry的相关文章

hdu4932 Miaomiao&#39;s Geometry (BestCoder Round #4 枚举)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4932 Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 410    Accepted Submission(s): 147 Problem Description There are N point

BestCoder4——Miaomiao&#39;s Geometry(水题。不知道放什么分类)

Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 10    Accepted Submission(s): 3 Problem Description There are N point on X-axis . Miaomiao would like to cover them ALL by us

hdu 4932 Miaomiao&#39;s Geometry 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4932 题目意思:给出 n 个点你,需要找出最长的线段来覆盖所有的点.这个最长线段需要满足两个条件:(1)每个点是某条线段的左端点或右端点   (2)任意两条线段之间的重叠部分的长度为0.(一个点重叠默认长度为0,即[1,2] , [2, 3] 视为合法).还有一点我来补充吧,就是这个最大长度是固定的,看第3组测试数据  1 9 100 10,[-7,1] , [1,9] , [10,18] , [1

BestCoder Round #4 之 Miaomiao&#39;s Geometry(2014/8/10)

Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 10    Accepted Submission(s): 3 Problem Description There are N point on X-axis . Miaomiao would like to cover them ALL by usi

hdu4932 Miaomiao&#39;s Geometry

这是一道搜索题,我们很容易得到目标值的上下界,然后就只能枚举了. 就是将x轴上的点排序之后从左到右依次考察每个点,每个点要么在线段的左端点,要么在线段的右端点. 点编号从0到n-1,从编号为1的点开始,在枚举的过程中不断压缩上界,有一种情况需要特别讨论,即哪种一条线段恰好覆盖相邻两个点的. 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <map> 5 #i

hdu 4932 Miaomiao&#39;s Geometry(暴力)

题目链接:hdu 4932 Miaomiao's Geometry 题目大意:在x坐标上又若干个点,现在要用若干条相等长度的线段覆盖这些点,若一个点被一条线段覆盖,则必须在这条线的左端点或者是右端点,并且各个线段放的位置不能又重叠,求最大长度. 解题思路:这题有坑点,比赛的时候o(n)的算法去寻找两点之间最短距离.但起始这样是不行的,比如-1 0 10 12 18 20,这样维护过去的话,最短应该是12~18,长度为6,这段线段可以覆盖12和18的点,然后-1和20又在两端.于是只有0和10两点

HDU 4932 Miaomiao&#39;s Geometry(推理)

HDU 4932 Miaomiao's Geometry 题目链接 题意:给定x轴上一些点(不重复),现在要选一个线段,使得能放进这些区间中,保证线段不跨过点(即线段上只能是最左边或最右边是点),并且没有线段相交,求能放进去的最大线段 思路:推理一下,只有两点之间的线段,还有线段的一半可能符合题意,然后对于每种线段,去判断一下能不能成功放进去,这步用贪心,优先放左边,不行再放右边 代码: #include <cstdio> #include <cstring> #include &

hdoj 4932 Miaomiao&#39;s Geometry 【暴力枚举】

题意:在一条直线上有n个点,取一长度差为x的区间, 规定点必须是区间的端点, 让你找出来最大的x 策略:rt 分析可得:两个相邻点之间的区间要么是两个点的差,要么就是两个点的差的一半,那我们就简单枚举一下就好了 排好序之后再枚举 代码: #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define M 200 using namespace std; do

【HDOJ】4932 Miaomiao&#39;s Geometry

递归检测.因为dis数组开的不够大,各种wa.写了个数据发生器,果断发现错误,改完就过了. 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 6 using namespace std; 7 8 #define MAXN 55 9 10 int n; 11 double a[MAXN], dis[MAXN*2]; 12 char vi

BestCoder Round #4 Miaomiao&#39;s Geometry (暴力)

Problem Description There are N point on X-axis . Miaomiao would like to cover them ALL by using segments with same length. There are 2 limits: 1.A point is convered if there is a segments T , the point is the left end or the right end of T. 2.The le