• POJ 1328 Radar Installation 贪心


    题目大意:
    假设有一条无限长的海岸线,海岸线以上部分有n个岛屿。在海岸线上有雷达,每个雷达能够探测的范围为半径为r的圆,当且仅当一个岛屿与雷达的距离小于等于r时,岛屿能被雷达探测到。给出所有岛屿的坐标和雷达的半径。求最少需要用多少个雷达,使得所有的岛屿都被探测到。

    图中ABCD为海岛的位置。假设本题半径为2(符合坐标系),那么A点坐标为(1,1)以此类推。
    在题中,记录每个点的坐标,并把一个点新加一个标记变量以标记是否被访问过。

    这里写图片描述
    存储图中红色圆与X轴的交点。先排序,排序的准则是按红色圆与x轴左交点的先后顺序。
    如图,如果B点圆(且如此称呼)的左交点(J1点)在A点圆右交点(E1)左侧,那么B点一定涵盖在A点圆内部。再如图,如果D点圆的左交点(图中未标示)在A点圆的右交点(未标示)右,则D点不在A点圆中。

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    
    using namespace std;
    
    struct point
    {
        double left, right;
    }dp[1050];
    
    int sum;
    
    int cmp(point a, point b)
    {
        return a.left<b.left;
    }
    
    void solve(int n)
    {
        sort(dp, dp+n, cmp);
        sum=1;
        double std;
        std=dp[0].right;
        for(int i=1; i<n; ++i)
        {
            if(dp[i].left>std)
            {
                sum++;
                std=dp[i].right;
            }
            else if(dp[i].right<std)
            {
                std=dp[i].right;
            }
        }
    }
    
    int main()
    {
        int n, r, x, y;
        int t=1;
        while(cin>>n>>r&&(n+r!=0))
        {
            int i, fail=0;
            for(i=0; i<n; i++)
            {
                cin>>x>>y;
                if(y>r)
                    fail=1;
                else
                {
                    double l=sqrt ((double)(r*r-y*y));
                    dp[i].left=x-l;
                    dp[i].right=x+l;
                }
            }
            if(fail)
            {
                sum=-1;
                cout<<"Case "<<t++<<": "<<sum<<endl;
            }
            else
            {
                solve(n);
                cout<<"Case "<<t++<<": "<<sum<<endl;
            }
        }
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    PHP的pcntl进程控制之pcntl_wait
    初探PHP多进程
    php是单进程语言,但是也有办法支持多进程
    PHP中pack、unpack的详细用法
    php的几种运行模式
    PHP多进程用例--swoole和pcntl
    MySQL临时表
    centos-6.4 yum EPEL
    关于android上dpi/screen-size的厘清解释
    android studio在windows上设置git/ssh
  • 原文地址:https://www.cnblogs.com/wanglaoda/p/4937152.html
Copyright © 2020-2023  润新知