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.
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.
For each test cases , output a real number shows the answser. Please output three digit after the decimal point.
3 3 1 2 3 3 1 2 4 4 1 9 100 10
1.000 2.000 8.000HintFor 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.
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <map>
#include <algorithm>
#include <queue>
#include <cmath>
#define INF 0xffffff
#define lln long long
#ifdef ONLINE_JUDGE
#define FOI(file) 0
#define FOW(file) 0
#else
#define FOI(file) freopen(file,"r",stdin);
#define FOW(file) freopen(file,"w",stdout);
#endif
using namespace std;
struct Node
{
int n;
bool operator < (const Node &a) const
{
return n < a.n;
}
};
int n;
#define MAXN 51
int a[MAXN];
int main()
{
//FOI("input");
//FOW("output");
//write your programme here
int i, j, k;
int t, pre;
int n, len;
Node temp;
priority_queue <Node> q;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
for(i = 0; i < n-1; i++)
{
len = a[i+1] - a[i];
temp.n = len;
q.push(temp);
}
pre = 0;
bool done = false;
while(!q.empty())
{
while(pre == q.top().n)
{
q.pop();
}
pre = q.top().n;
q.pop();
for(i = 1; i < n; i++)
{
if(a[i] - a[i-1] >= pre)
{
done = true;
continue;
}
else
{
if(i != 1 && i != n-1)
{
bool x = a[i-1] - a[i-2] >= pre;
bool y = a[i+1] - a[i] >= pre;
if(x && y)
{
done = true;
continue;
}
done = false;
break;
}
else
{
if(i == 1 && a[i+1] - a[i] >= pre)
{
done = true;
continue;
}
else if(i == n-1 && a[i-1] - a[i-2] >= pre)
{
done = true;
continue;
}
done = false;
break;
}
}
}
if(done)
break;
}
while(!q.empty())
q.pop();
double s = pre;
printf("%.3f\n", s);
}
return 0;
}
BestCoder4——Miaomiao's Geometry(水题。不知道放什么分类),布布扣,bubuko.com
BestCoder4——Miaomiao's Geometry(水题。不知道放什么分类)
原文地址:http://blog.csdn.net/svitter/article/details/38473943