zoukankan      html  css  js  c++  java
  • HDU 4932 Miaomiao'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 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.
     
    题意:有一些点,现在需要一些相同长度的片段遮住这些点(每个点在片段的两端才算遮住),这些片段不能有重叠部分,求出满足这样的片段的最大长度。
     
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<stdlib.h>
    #include<queue>
    #include<algorithm>
    using namespace std;
    
    const int N=1e5+10;
    const int M=50000;
    const int INF=0x3f3f3f3f;
    
    double a[100], b[200]; ///b数组保存两点之间的长度及其一半
    int n;
    
    int Judge(double d) ///判断d能不能当满足条件的片段长度
    {
        double p = a[0];
        int i;
    
        for (i = 1; i < n; i++)
        {
            if (fabs(p-a[i]) < 1e-9) continue;
    
            if (p > a[i]) return 0;
            else if (p+d <= a[i]) p = a[i];
            else p = a[i]+d;
        }
    
        return 1;
    }
    
    int main ()
    {
        double Max;
        int T, i, k;
    
        scanf("%d", &T);
    
        while (T--)
        {
            scanf("%d", &n);
            for (i = 0; i < n; i++)
                scanf("%lf", &a[i]);
    
            memset(b, 0, sizeof(b));
            Max = -INF;
            k = 0;
    
            sort(a, a+n);
    
            for (i = 1; i < n; i++)
            {
                b[k++] = a[i]-a[i-1];
                b[k++] = (a[i]-a[i-1])/2;
            }
    
            for (i = 0; i < k; i++)
            {
                if (Judge(b[i]))
                    Max = max(Max, b[i]);
            }
    
            printf("%.3f
    ", Max);
        }
    
        return 0;
    }
  • 相关阅读:
    nginx配置虚拟主机
    nginx 中http协议的相关配置
    nginx的性能优化
    编译安装NGINX-1.21.0
    nginx命令使用
    编译安装NGINX1.16.1
    nginx: [emerg] getpwnam("nginx") failed
    swift选择类或结构体
    工具与网址
    WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h:373
  • 原文地址:https://www.cnblogs.com/syhandll/p/4898322.html
Copyright © 2011-2022 走看看