• poj1328


    题意:
    地图的x轴的上方为海,下方为陆地,海中有n个小岛。
    有一种雷达,能探测到的范围为以d为半径的圆。
    问海岸线上至少造多少雷达可以把所有的小岛都包含在内。
    注意雷达是建在海岸线上的,也就是x轴上的。
    思路:
    最后肯定每个岛屿都在一个雷达的范围内,通过半径d,岛屿的y坐标计算出雷达的范围,然后按照雷达左范围从小到大排序,
    最后如果这个岛屿在雷达的最大范围maxx内,就更新最大范围,否则需要另一个雷达,ans++。

    
    #include <string.h>
    #include <stdio.h>
    #include <math.h>
    #include <queue>
    #include <stack>
    #include <algorithm>
    #define ll long long
    using namespace std;
    const int maxn=11000;
    struct node
    {
    	double x,y;
    } pp[maxn];
    bool cmp(node a,node b)
    {
    	return a.x<b.x;
    }
    int main()
    {
    	int i,j,n,d,a,b;
    	int f=1;
    	while(~scanf("%d%d",&n,&d)&&n&&d)
    	{
    		int ans=1;
    		for (i=0; i<n; i++)
    		{
    			scanf("%d%d",&a,&b);
    			if (b>d)
    				ans=-1;
    			double len=sqrt(d*d-b*b);
    			pp[i].x=a-len;
    			pp[i].y=a+len;
    		}
    		if (ans!=-1)
    		{
    			sort(pp,pp+n,cmp);
    			double maxx=pp[0].y;
    			for (i=1; i<n; i++)
    			{
    				if (pp[i].x>maxx)
    				{
    					ans++;
    					maxx=pp[i].y;
    				}
    				else if(pp[i].y<maxx)
    					maxx=pp[i].y;
    			}
    		
    		}
    		printf("Case %d: %d
    ",f++,ans);
    	}
    
    	return 0;
    }
    
    
  • 相关阅读:
    Currency Exchange
    Robot Motion
    Crashing Robots
    Parencodings
    Y2K Accounting Bug
    Tautology
    Power of Cryptography
    Radar Installation -poj 1328
    The Pilots Brothers' refrigerator
    【java】之cron表达式
  • 原文地址:https://www.cnblogs.com/shidianshixuan/p/14427494.html
Copyright © 2020-2023  润新知