zoukankan      html  css  js  c++  java
  • UVA 1193 区间相关(greedy)

     input

    n d 1<=n<=1000

    n行坐标xi,yi

    output

    位于x轴扫描器的扫描距离为d,至少要多少个扫描器才能扫描到所有坐标

    如果无法扫描完输出-1,否则输出扫描器个数

    做法:将每个坐标转化为扫描器可扫到它的区间,然后取最少区间,最少区间为最多的不连续区间数

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstdlib>
     4 #define INF 1e-8
     5 
     6 int n, cas=1;
     7 double x[1010][2], d;
     8 int cmp(const void*a,const void*b)
     9 {
    10     double*c=(double*)a,*d=(double*)b;
    11     if(c[0]!=d[0]) return c[0]>d[0]?1:0;
    12     return c[1]>d[1]?1:0;
    13 }
    14 int main()
    15 {
    16     freopen("/home/user/桌面/in","r",stdin);
    17     while (scanf("%d%lf", &n, &d) == 2&& n)
    18     {
    19         int i,work=1,x0,y0;
    20         for (i = 0; i < n; i++)
    21         {
    22             scanf("%d%d", &x0, &y0);
    23             if (y0 > d||y0<0)
    24             {
    25                     work = 0;
    26                     for(i++;i<n;i++)
    27                         scanf("%*d%*d");
    28                     break;
    29             }
    30             double t = sqrt(d*d - y0 * y0);
    31             x[i][0] = x0 - t;
    32             x[i][1] = x0 + t;
    33         }
    34         printf("Case %d: ", cas++);
    35         if (!work)
    36         {
    37             puts("-1");
    38             continue;
    39         }
    40         qsort(x,n,sizeof(x[0]),cmp);
    41 //        for(int i=0;i<n;i++) printf("%lf %lf
    ",x[i][0],x[i][1]);
    42         int j=1;
    43         d=x[0][1];
    44         for(i=1;i<n;i++)
    45         {
    46             if(x[i][0]<=d) {if(x[i][1]<d) d=x[i][1];}
    47             else
    48             {
    49                 j++;
    50                 d=x[i][1];
    51             }
    52         }
    53         printf("%d
    ", j);
    54     }
    55     return 0;
    56 }
    View Code
  • 相关阅读:
    Hadoop入门
    Redis缓存分布式高可用架构原理
    ES分布式搜索引擎架构原理
    Java锁,多线程与高并发,JUC并发包
    图算法--拓扑序列
    数据结构--数组模拟队列
    数据结构--数组模拟栈
    数据结构--数组模拟双链表
    数据结构--数组模拟单链表
    基础算法--双指针
  • 原文地址:https://www.cnblogs.com/cdyboke/p/4995662.html
Copyright © 2011-2022 走看看