hdu 4932Miaomiao's Geometry

来源:互联网 发布:阿里云ftp默认端口号 编辑:程序博客网 时间:2024/05/16 08:57

强行卖萌...瞎搞各种暴力然后就卖萌了

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;double p[120], d[120];int f[120];int n, cnt, tot;bool Judge(double tt){int i;  for(i = 1; i < n-1; i++)  {    if(p[i] - tt < p[i-1] && p[i] + tt > p[i+1])      break;//无论向左还是向右均为不符合    if(p[i] - tt >= p[i-1])//向左察看    {      if(f[i-1] == 2)//如果前一个是向右的      {        if(p[i] - p[i-1] == tt)          f[i] = 1;//两个点作为线段的两个端点        else if(p[i] - p[i-1] >= 2*tt)//一个向左一个向右        {          f[i] = 1;        }        else if(p[i] + tt <= p[i+1])        {          f[i] = 2;//只能向右        }        else          return false;      }      else        f[i] = 1;    }    else if(p[i] + tt <= p[i+1])      f[i] = 2;  }  if(i == n-1)//全部符合    return true;return false;}int main(){scanf("%d", &tot);while(tot--){scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%lf", &p[i]);}sort(p, p+n);int cnt = 0;for(int i = 1; i < n; i++){d[cnt++] = p[i] - p[i-1];d[cnt++] = (p[i] - p[i-1]) / 2;}sort(d, d+cnt);double ans;for(int i = cnt-1; i >= 0; i--){memset(f,0,sizeof(f));      f[0] = 1; //开始肯定是让线段向左      if(Judge(d[i]))      {        ans = d[i];        break;      } } printf("%.3f\n", ans);}return 0;}


0 0
原创粉丝点击