zoukankan      html  css  js  c++  java
  • Virtual Judge POJ 1328 Radar Installation

    贪心

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    struct Radar {
        double start,end;
    } radar[1005];
    bool cmp(Radar a,Radar b) {
        return a.start<b.start;
    }
    int main() {
        int n,d,x,y,m,num,flag;
        double l,r;
        m = 1;
        while(scanf("%d%d",&n,&d)) {
            if(!n && !d)  //如果为0
                break;
            flag = true;
            for(int i = 0; i < n; i++) {
                scanf("%d%d",&x,&y);
                if(y > d)
                    flag = false;
                radar[i].start = x - sqrt(d * d - y * y);  //勾股定理
                radar[i].end = x + sqrt(d * d - y * y);  //区间覆盖范围
            }
            if(!flag) {
                printf("Case %d: -1
    ",m++);
                continue;
            }
            sort(radar,radar + n,cmp);   //排序  n为岛屿数目
            num = 1,l = radar[0].start,r = radar[0].end;//l和r是double  l为最左端的区间的左端  r为右端
            for(int i = 1; i < n; i++) {
                if(radar[i].start >= l && radar[i].end <= r) { // 某两块区间存在包含关系
                    l = radar[i].start;
                    r = radar[i].end;
                } else if(radar[i].start <= r && radar[i].end >= r) //某两个区间交叉
                    l = radar[i].start;
                else if(radar[i].start > r) { //两个区间没有交集
                    l = radar[i].start;
                    r = radar[i].end;
                    num++;
                }
            }
            printf("Case %d: %d
    ",m++,num);
        }
        return 0;
    }
  • 相关阅读:
    网页显示UIWebView(一个)
    借百度数据,建立你自己的程序
    引水数据--紧凑
    Unity3d 实时折射和反射
    snmp监控磁盘
    Linux snmp监控
    20监控工具
    Java 四舍五入
    Oracle主键操作
    SnmpTrap
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11746397.html
Copyright © 2011-2022 走看看