zoukankan      html  css  js  c++  java
  • POJ1328(贪心)

    题目大意:x轴为河岸,给出小岛坐标,在河岸上建探测范围一定雷达,要求覆盖所有小岛,求雷达的最小个数。

    分析:以小岛为圆心,探测半径画圆,与x轴交于ai,bi,求出所有区间并排序,如果两个区间有重叠,则可覆盖,将bi更新为b(i-1)即可。

    代码

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    struct xy
    {
    	int x;
    	int y;
    }point[1000];
    struct l
    {
    	double begin;
    	double end;
    }length[1005];
    int cmp(l a, l b)
    {
    	return a.begin < b.begin;
    }
    int main()
    {
    	int n, k,num=0;
    	while (scanf("%d%d", &n, &k) != EOF&&n&&k)
    	{
    		int sum = 1,flag=0;
    		for (int i = 0; i < n; i++)
    		{
    			scanf("%d%d", &point[i].x, &point[i].y);
    		}
    		for (int i = 0; i < n; i++)
    		{
    			if (k < abs(point[i].y))
    			{
    				flag = 1;
    				break;
    			}
    			double t = sqrt(k*k*1.0- point[i].y*point[i].y*1.0);
    			length[i].begin = point[i].x *1.0- t;
    			length[i].end = point[i].x*1.0 + t;
    		}
    		if (flag == 1)
    		{
    			printf("Case %d: -1
    ", ++num);
    			continue;
    		}
    		sort(length, length + n, cmp);
    		for (int i = 0; i < n - 1; i++)
    		{
    			if (length[i].end >= length[i + 1].begin)
    			{
    				length[i + 1].end = length[i].end;
    				continue;
    			}
    			sum++;
    		}
    		num++;
    		printf("Case %d: %d
    ", num,sum);
    	}
    	return 0;
    }


  • 相关阅读:
    英语长难句
    服务器部署 halo博客项目
    11月迟来的总结
    10月总结
    9月总结
    python根据字符串导入模块
    RestFul(番外):类视图更适合restful
    Django-基础 Meta自定义
    (垃圾代码)修改同目录下面的xml文件标签数值
    Django-templatetags设置(在templates中使用自定义变量)
  • 原文地址:https://www.cnblogs.com/nickqiao/p/7583417.html
Copyright © 2011-2022 走看看