这是一道搜索题,我们很容易得到目标值的上下界,然后就只能枚举了。

就是将x轴上的点排序之后从左到右依次考察每个点,每个点要么在线段的左端点,要么在线段的右端点。

点编号从0到n-1,从编号为1的点开始,在枚举的过程中不断压缩上界,有一种情况需要特别讨论,即哪种一条线段恰好覆盖相邻两个点的。

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <set>
#include <cmath>
#include <ctime>
#pragma comment(linker, "/STACK:102400000,102400000")
#define lson (u << 1)
#define rson (u << 1 | 1)
#define rep(i, a, b) for(i = a; i < b; i++)
#define reps(i, a, b, c) for(i = a; i < b; i += c)
#define repi(i, a, b) for(i = a; i >= b; i--)
#define cls(i, j) memset(i, j, sizeof i)
using namespace std;
typedef __int64 ll;
const double eps = 1e-;
const double pi = acos(-1.0);
const int maxn = 1e5 + ;
const int maxm = ;
const int inf = 0x3f3f3f3f;
const ll linf = 0x3fffffffffffffff;
const ll mod = 1e9 + ; double a[];
int n;
double maxi, mini; double dfs(int u, int pre, double limit, int fixed){
//printf("%d %d\n",u, pre);
if(u >= n - ) return limit;
if(limit <= mini) return mini;
double to_left = a[u] - a[pre];
double to_right = a[u + ] - a[u];
double tem;
if(fixed){
if(to_left >= limit) return dfs(u + , u, limit, );
if(to_right >= * limit || to_right == limit) return dfs(u + , u + , limit, );
if(to_right > limit) return dfs(u + , u + , limit, );
if(to_right < limit) return mini;
}
if(to_left >= limit) return dfs(u + , u, limit, );
double tem1 = dfs(u + , u, to_left, );
double tem2 = mini;
if(to_right >= * limit) tem2 = dfs(u + , u + , limit, );
else{
if(to_right <= limit) tem2 = dfs(u + , u + , to_right, );
double tem3 = mini;
if(limit >= to_right / ) tem3 = dfs(u + , u + , to_right / , );
tem2 = max(tem2, tem3);
tem3 = dfs(u + , u + , min(to_right, limit), );
tem3 = max(tem2, tem3);
if(limit < to_right / ) tem3 = dfs(u + , u + , limit, );
tem2 = max(tem2, tem3);
}
return max(tem1, tem2);
} int main(){
// freopen("in.txt", "r", stdin);
int T;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
int i;
rep(i, , n) scanf("%lf", &a[i]);
sort(a, a + n);
a[n] = ;
mini = (double)linf;
rep(i, , n) mini = min(mini, a[i] - a[i - ]);
maxi = (double)linf;
rep(i, , n - ) maxi = min(maxi, max(a[i + ] - a[i], a[i] - a[i - ]));
double ans = dfs(, , maxi, );
printf("%.3f\n", ans);
}
return ;
}

hdu4932 Miaomiao's Geometry的更多相关文章

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

    题目链接:pid=4932" style="color:rgb(202,0,0); text-decoration:none">http://acm.hdu.edu ...

  2. BestCoder Round #4 之 Miaomiao's Geometry(2014/8/10)

    最后收到邮件说注意小数的问题!此代码并没有过所有数据,请读者参考算法, 自己再去修改一下吧!注意小数问题! Miaomiao's Geometry Time Limit: 2000/1000 MS ( ...

  3. 枚举+贪心 HDOJ 4932 Miaomiao's Geometry

    题目传送门 /* 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则 ...

  4. Miaomiao's Geometry

    HDU 4932  Bestcoder Problem Description There are N point on X-axis . Miaomiao would like to cover t ...

  5. 【HDOJ】4932 Miaomiao's Geometry

    递归检测.因为dis数组开的不够大,各种wa.写了个数据发生器,果断发现错误,改完就过了. #include <cstdio> #include <cstring> #incl ...

  6. BestCoder4 1002 Miaomiao's Geometry (hdu 4932) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4932 题目意思:给出 n 个点你,需要找出最长的线段来覆盖所有的点.这个最长线段需要满足两个条件:(1 ...

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

    HDU 4932 Miaomiao's Geometry pid=4932" target="_blank" style="">题目链接 题意: ...

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

    题目链接:hdu 4932 Miaomiao's Geometry 题目大意:在x坐标上又若干个点,如今要用若干条相等长度的线段覆盖这些点,若一个点被一条线段覆盖,则必须在这条线的左端点或者是右端点, ...

  9. hdu 4932 Miaomiao&#39;s Geometry(暴力枚举)

    pid=4932">Miaomiao's Geometry                                                               ...

随机推荐

  1. mapreduce小结

    (不断更新) MapReduce架构是一种分布式编程架构,它本质上是将任务划分,然后归并.它是以数据为中心的编程架构,相比与分布式计算和并行计算等,它更看重的是吞吐率.它处理的数据是PB级的数据,它并 ...

  2. Android初体验

    上文提到使用genymotion来运行android项目,结果却是令人失望,我这边使用的是代理账户,尽管我在Setting中配置了代理,还是不能登录我注册的账户,郁闷,于是本文采用的是我自己的手机作为 ...

  3. Groupon面经Prepare: Sort given a range && Summary: Bucket Sort

    首先是如何sort一个只有0和1的数组,要求inplace. follow up是告诉一个range,如何在O(N)时间内sort好 两个pointer可解 package Sorting; impo ...

  4. 树形dp Anniversary party(HDU1520)

    题意:给出一棵树,(上下级关系)每个节点都有一个权值,要求选出一些节点满足这些节点任意连个点都不是直接的上下级关系,可以得到的最大权值是多少? 分析:对于每个点有两个状态选或者不选,用状态数组dp[u ...

  5. 树形DP(Rebuilding Roads poj1947)

    题意:给出一颗树,求要形成一颗元素个数是p的子树,最少要去掉多少边 #include"stdio.h" #include"string.h" #include& ...

  6. Where does beauty come from?

    One more question, rational beauty should come from a dedicated brain and mind. Should there be more ...

  7. UI design principles

    Master's conclusion: 1. fix a color pattern 2. fix the frames the UI will use 3. fix the subject tha ...

  8. spark standalone zookeeper HA部署方式

    虽然spark master挂掉的几率很低,不过还是被我遇到了一次.以前在spark standalone的文章中也介绍过standalone的ha,现在详细说下部署流程,其实也比较简单. 一.机器 ...

  9. 夺命雷公狗---DEDECMS----13dedecms首页的完成

    我们的dedecms搭建起来后直接复制templets的目录复制一份,如下所示: 然后进入templets目录里面,然后再将default里面的东西都给干掉,然后将我们预先准备好的首页放进来,代码如下 ...

  10. Cortex-R5

    TCM:Tightly Coupled Memory,连接到RAM等memory中,但是CPU读写速度很快. ECC:Error Checking and Correction PMU:Perform ...