BestCoder Round #4(Miaomiao's Geometry-贪心)

Miaomiao‘s Geometry

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)

Total Submission(s): 1016 Accepted Submission(s): 276

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.

Source

BestCoder Round #4

Recommend

hujie | We have carefully selected several similar problems for you:4970
4969 4968 4967 4966

我的原先想法是二分所有整数解

后来发现有可能是半整数

5

1 2 5 6 8

所以改成了验证所有小数,仍错

发现是因为没有考虑到1条segment同时覆盖2点的情况

仍WA,

发现答案一定是某段区间的长度(或一半)否则必定可以继续拉长线段

加入优化,过。可能原先的Tle显示成wa或者溢出?了

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
#define MAXN (50+100)
#define eps (1e-6)
#define MAXLen (2000000000+10)
long long mul(long long a,long long b){return (a*b)%F;}
long long add(long long a,long long b){return (a+b)%F;}
long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}
typedef long long ll;
int t,n,a[MAXN];
bool check(double x)
{
	double t=a[1];
	Fork(i,2,n-1)
	{
		if (t==(double)a[i]) continue;
		else if (t<=(double)a[i]-x) t=(double)a[i];
		else if ((double)a[i]+x<=(double)a[i+1]) t=(double)a[i]+x;
		else return 0;
	}
	return 1;
}
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		For(i,n) scanf("%d",&a[i]);
		sort(a+1,a+1+n);
		double l=0,r=0,ans=0;
		Fork(i,2,n)
		{
			if (check((double)a[i]-a[i-1])) ans=max(ans,(double)a[i]-a[i-1]);
			else if (check(((double)a[i]-a[i-1])/2)) ans=max(ans,((double)a[i]-a[i-1])/2);
		}
		printf("%.3lf\n",ans);

	}

	return 0;
}

BestCoder Round #4(Miaomiao's Geometry-贪心),布布扣,bubuko.com

BestCoder Round #4(Miaomiao's Geometry-贪心)

时间: 2024-08-06 15:39:26

BestCoder Round #4(Miaomiao's Geometry-贪心)的相关文章

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

BestCoder Round #4 Miaomiao&amp;#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

[BestCoder Round #4] hdu 4932 Miaomiao&#39;s Geometry (贪心)

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

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

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&amp;#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

HDU 4932 Miaomiao&#39;s Geometry(BestCoder Round #4)

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

枚举+贪心 HDOJ 4932 Miaomiao&#39;s Geometry

题目传送门 1 /* 2 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 3 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则往右边放, 4 判断一下,取最大值.这题二分的内容少 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 9 #include <cmath> 10 using n

贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

题目传送门 1 /* 2 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 3 当然有可能两个数和超过p,那么an的值最优,每次还要和an比较 4 注意:不能选取两个相同的数 5 反思:比赛时想到了%p和sort,lower_bound,但是还是没有想到这个贪心方法保证得出最大值,还是题目做的少啊:( 6 */ 7 #include <cstdio> 8 #include <algorithm>