zoukankan      html  css  js  c++  java
  • 【HDOJ】4932 Miaomiao's Geometry

    递归检测。因为dis数组开的不够大,各种wa。写了个数据发生器,果断发现错误,改完就过了。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 
     6 using namespace std;
     7 
     8 #define MAXN 55
     9 
    10 int n;
    11 double a[MAXN], dis[MAXN*2];
    12 char visit[MAXN]; // 0: false, 1: left, 2:right
    13 
    14 bool dfs(int x, double l) {
    15     if (x == n-1)
    16         return true;
    17     if (x == 0) {
    18         visit[x] = 2;
    19         return dfs(x+1, l);
    20     }
    21     if (visit[x-1] == 2) {
    22         if (a[x-1]+l <= a[x]) {
    23             visit[x] = 2;
    24             if ( dfs(x+1, l) )
    25                 return true;
    26         } else if (a[x]+l <= a[x+1]) {
    27             visit[x] = 1;
    28             return dfs(x+1, l);
    29         }
    30         return false;
    31     } else {
    32         if (a[x-1]+2*l <= a[x] || a[x-1]+l==a[x]) {
    33             visit[x] = 2;
    34             if ( dfs(x+1, l) )
    35                 return true;
    36         } else if (a[x]+l <= a[x+1]) {
    37             visit[x] = 1;
    38             return dfs(x+1, l);
    39         }
    40         return false;
    41     }
    42 }
    43 
    44 int main() {
    45     //FILE *fout = fopen("data", "w");
    46     int case_n, m;
    47     int i;
    48 
    49     scanf("%d", &case_n);
    50     while (case_n--) {
    51         scanf("%d", &n);
    52         for (i=0; i<n; ++i)
    53             scanf("%lf", &a[i]);
    54         sort(a, a+n);
    55         for (m=0, i=1; i<n; ++i) {
    56             dis[m++] = a[i] - a[i-1];
    57             dis[m++] = (a[i] - a[i-1])/2;
    58         }
    59         sort(dis, dis+m);
    60         dis[m] = 0.0f;
    61         for (i=m-1; i>=0; --i) {
    62             if (dis[i] != dis[i+1]) {
    63                 memset(visit, 0, sizeof(visit));
    64                 if ( dfs(0, dis[i]) )
    65                     break;
    66             }
    67         }
    68         printf("%.3lf
    ", dis[i]);
    69         //fprintf(fout, "%.3lf
    ", dis[i]);
    70     }
    71 
    72     return 0;
    73 }
  • 相关阅读:
    node-sass 安装失败
    js中复制功能总结
    设置NODE_ENV=test环境变量
    js eslint语法规范错误提示代码
    npm安装node包时怎么显示安装进度
    前端面试题总结三
    5种方式将数字转成千分位
    前端面试题总结二(js原型继承)
    前端面试题总结一(js变量和函数声明提前相关)
    1109 Group Photo (25分)
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3903742.html
Copyright © 2011-2022 走看看