zoukankan      html  css  js  c++  java
  • UVA221 Urban Elevations

    题目大意:在几何数学中的笛卡尔坐标系上给出每个矩形块左下角坐标,x轴方向和y轴方向长度和z轴高度(均为实数),求正视图能被看见的矩形块,输出时x小者优先,若x相同,则y小者优先

    思路分析:用结构体存储每个矩形块,利用sort,很容易按照输出顺序排列。关键在于如何判断矩形块是否可见,对于二维坐标的遍历当然是要用离散化的思想。

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<set>
    #include<vector>
    using namespace std;
    
    struct building
    {
        int id;
        double x,y,w,d,h;
        bool operator < (const building& b) const{
            return ((x<b.x) || (x==b.x && y<b.y));
        }
    }b[200];
    
    int n,num=0;
    
    bool isVisible(int i,int midx)
    {
        if(!(b[i].x<=midx && b[i].x+b[i].w>=midx))
            return false;
    
        for(int j=0;j<n;j++)
        {
            if(b[j].h>=b[i].h && b[j].y<b[i].y && b[j].x <=midx && b[j].x+b[j].w>=midx)
                return false;
        }
        return true;
    }
    
    int main(void)
    {
        while(cin>>n && n!=0)
        {
            if(num!=0)  puts("");
            printf("For map #%d, the visible buildings are numbered as follows:
    ", ++num);
            set<double> setx; // 去重
            for(int i=0;i<n;i++)
            {
                scanf("%lf %lf %lf %lf %lf", &b[i].x, &b[i].y, &b[i].w, &b[i].d, &b[i].h);
                b[i].id = i+1;
                setx.insert(b[i].x); 
                setx.insert(b[i].x+b[i].w);
            }
            sort(b,b+n);
            vector<double> x(setx.begin(),setx.end());
            int cnt=0;
    
            for (int i = 0; i < n; i ++) {
                for (int j = 0; j < x.size()-1; j ++) {
                    if (isVisible(i, (x[j]+x[j+1])/2)) {
                        cnt ++;
                        printf("%s%d", cnt != 1 ? " ":"", b[i].id);
                        break;
                    }
                }
            }
            puts("");
        }
        return 0;
    }
  • 相关阅读:
    内存碎片
    内核对象之异步IO请求完成时调用一个函数
    线程池之在内核对象触发时调用一个对象
    线程池之每隔一段时间调用一个函数
    线程池
    logging模块
    装饰器
    django 2.0 url匹配
    django models 文件夹
    转载
  • 原文地址:https://www.cnblogs.com/jaszzz/p/13040234.html
Copyright © 2011-2022 走看看