• 【解题报告】 POJ1328 雷达设备


    【解题报告】 POJ1328 雷达设备

    题目:雷达设备(已翻译)

    解题思路:

    贪心。

    这道题只需要将x轴上方的一些建筑物,利用勾股定理算出x轴上一段能管辖它的区间,所以问题就变成了给定n个区间,在x轴上放置最少的点,使每个区间至少包含一个点,但是,特别地,如果建筑物的纵坐标超出了每个雷达管辖的半径,就直接不会继续下去了,因为不管怎么样,那个建筑物都无法被管辖,所以我们只需要每个建筑物算出来的区间的右端点进行排序,然后设置一个数组vis,来记录每个建筑物是否被管辖到,然后就ok了

    AC代码

    #include <iostream>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    const int maxn=1005;
    int n,d;
    int ans;
    bool vis[maxn];
    struct sec
    {
    	double l;
    	double r;
    }b[maxn];
    bool cmp(sec p,sec q)
    {
    	return p.r<q.r;
    }
    int main()
    {
    	cin>>n>>d;
    	for(int i=1;i<=n;i++)
    	{
    		int x,y;
    		cin>>x>>y;
    		y=abs(y);
    		if(y>d)
    		{
    			cout<<"-1"<<endl;
    			return 0;
    		}
    		b[i].l=x-sqrt(d*d-y*y);
    		b[i].r=x+sqrt(d*d-y*y);
    		vis[i]=false;
    	}
    	sort(b+1,b+1+n,cmp);
    	for(int i=1;i<=n;i++)
    	{
    		if(!vis[i])
    		{
    			ans++;
    			vis[i]=true;
    			for(int j=i+1;j<=n;j++)
    			{
    				if(b[j].l<b[i].r)
    				vis[j]=true;
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    本博文为wweiyi原创,若想转载请联系作者,qq:2844938982
  • 相关阅读:
    QT5每日一学(五)QT布局管理器
    构造注入链:POP
    Jarvis OJ--PHPINFO
    XCTF(Web_php_unserialize)
    XCTF-反序列化中_wakeup()函数
    session反序列化
    PHP反序列化
    默认安装的phpMyAdmin会存在哪些安全隐患
    如何进行数据库备份
    开启mysql外部访问(root外连)
  • 原文地址:https://www.cnblogs.com/wweiyi2004/p/11330605.html
Copyright © 2020-2023  润新知