SKYLINE

题意:

n个建筑,给出其左右坐标和高度,有可能发生覆盖,求每个建筑在多长部分是最高的(覆盖度),求各覆盖度之和。

分析:

线段树,两个懒惰标记same区间是否同一高度、val区间最高高度

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<1|1
#define All 1,N,1
#define N 100010
#define read freopen("in.txt", "r", stdin)
const ll  INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod =  1000000007;
int val[N*4],same[N*4],n,total;
void pushdown(int rt){
    if(same[rt]!=-1){
        same[rt<<1]=same[rt<<1|1]=same[rt];
        val[rt<<1]=val[rt<<1|1]=same[rt];
        same[rt]=-1;
    }
    return;
}
void query(int L,int R,int l,int r,int rt,int v){
    if(same[rt]!=-1&&val[rt]>v)return;
    if(same[rt]!=-1){
        if(L<=l&&R>=r){
            if(v>=val[rt]){
                same[rt]=val[rt]=v;
                total+=(r-l+1);
            }
             return;
        }
    }
    pushdown(rt);
    int m=(l+r)>>1;
    if(L<=m)query(L,R,lson,v);
    if(R>m)query(L,R,rson,v);
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        memset(same,0,sizeof(same));
        memset(val,0,sizeof(val));
        int l,r,v;
        total=0;
        while(n--){
            scanf("%d%d%d",&l,&r,&v);
            query(l,r-1,1,N,1,v);
        }
        printf("%d\n",total);
    }
return 0;
}
时间: 2024-10-07 22:22:13

SKYLINE的相关文章

skyline应用-BS动态绘制面状区域

在三维GIS的规划.公安等应用系统中,常需要操作者在地图上动态勾画出面状区域,以便用来观看,并能够进行保存查看. skyline的BS开发是采用JavaScript语言进行开发,最新版的6.6可以支持chrome.Firefox.IE浏览器,但随着chrome的更新,不再支持npgapi的方式,最新版的chrome上会失效,一直以来在IE浏览器上的支持比较稳定,建议在IE上开发使用. 面状区域绘制类似于TerraExplorer上的画面操作,只是这个用程序实现. 具体步骤如下: 在开始进行标绘时

[leedcode 218] The Skyline Problem

A city's skyline is the outer contour of the silhouette formed by all the buildings in that city when viewed from a distance. Now suppose you are given the locations and height of all the buildings as shown on a cityscape photo (Figure A), write a pr

[LeetCode] The Skyline Problem

An interesting problem! But not very easy at first glance. You need to think very clear about how will a keypoint be generated. Since I only learn from others' solutions and am still unable to give my personal explanations, I would suggest you to the

skyline坐标转换

1.使用skyline自带坐标转换,首先创建坐标系sgworld.CoordServices.CreateCoordinateSystem(WellKnownText),fly本身坐标系sgworld.CoordServices.SourceCoordinateSystem(WellKnownText),WellKnownText字符串格式可参考http://www.cnblogs.com/Dormouse/articles/1422984.html;也可以通过TPro查看,打开fly,按F8,

Skyline软件安装可能遇到的问题

skyline软件常用的有TB,TG和TE,TB和TE安装没有什么特殊要求.而TG安装稍微麻烦一下,在安装过程中也会遇到一些问题.这里说一下TG的安装方法: 1.将IIS在程序中勾选上,因为模型发布要用到IIS 2.服务没法启动有两个原因,原因之一,端口冲突,修改一下地形服务端口即可:其二,地形服务无法启动,或没有地形服务,因为安装包中没有 SLTerraGate.lic这个文件,只要将该文件拷贝到安装包中,重新安装一下即可

[LeetCode] The Skyline Problem 天际线问题

A city's skyline is the outer contour of the silhouette formed by all the buildings in that city when viewed from a distance. Now suppose you are given the locations and height of all the buildings as shown on a cityscape photo (Figure A), write a pr

UVA 1232 - SKYLINE(线段树)

UVA 1232 - SKYLINE 题目链接 题意:按顺序建房,在一条线段上,每个房子一个高度,要求出每间房子建上去后的轮廓线 思路:线段树延迟更新,一个setv作为高度的懒标记,此外还要在开一个cover表示当前结点一下是否都为同一高度 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define lson(x) ((x<<1)+1)

UVALive - 4108 SKYLINE[线段树]

UVALive - 4108 SKYLINE Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug Description The skyline of Singapore as viewed from the Marina Promenade (shown on the left) is one of the iconic scenes of Singapore. Country X would als

【0002(基础)】Skyline二次开发入门经典系列教程&mdash;&mdash;目录

这段时间由于个人事务太多,以至于没有按照时间更新系列教程,本人将尽快补上所欠章节,在此说声抱歉!   这一章在我心目中占有很重要的地位,因为我想通过这一章的内容来确定整个系列的大致走向.然而在整理的过程中,发现现实远比想象要复杂得多:首先想尽可能介绍较多的知识点,其次又要考虑学习的简易程度,再次又要确定顺当的知识体系流程-- 由于暂时的考虑无论如何也是不可能完备的,因此为了不影响后面教程的编写,暂定把这一章作为一个[流动性质]的可变章节,在编写每一章时,动态根据实际情况修改(添加.移动.修改)系

【0001(基础)】Skyline二次开发入门经典系列教程总览

本人是从2012年开始接触Skyline二次开发的,经历过 v6.0~v6.5(最新的6.6版本还未使用)的所有版本.作为一名非GIS专业毕业的大学本科生,鬼使神差般地进入了这个瑰丽的GIS领域.因此,在从事了4年多的Skyline二次开发工作后,我不能说我是"授业有专攻",更不能说我是"闻道有先后".在这个领域内,大牛之人比比皆是,正是因为他们的存在与指引,才使得我现在有点东西可以写出来供大家交流沟通.   整理这个系列教程的原因主要出于如下几点的考虑: 1.Sk