我一开始没有想到用线段树,是我学得太僵了...

我们要记录每段的最大高度,而且要组织成区间信息,这要用到线段树

怎么用呢?

线段树维护区间最大值;对于每个线段,先二分至其包含区间,如果最大值>=h,就能把这个区间赋值

优化:如果最小值<=h,即可返回

这道题算是一个线段树的小魔改吧...

我们发现:对于线段树,查询和修改两个操作是可以合在一起的;找区间也不是固定的,可以根据区间信息,二分至我们目标的区间

#include<iostream>
#include<cstdio>
#include<cstring>using namespace std;const int N=1e5+3,V=1e5+3;struct line{int l,r,h;
}a[N];struct sgt{int mn,mx;int st;
}R[V<<2];int gl;
void push_down(int o,int l,int r){if(R[o].st){R[o<<1].mx=R[o<<1|1].mx=R[o<<1].mn=R[o<<1|1].mn=R[o].st;R[o<<1].st=R[o<<1|1].st=R[o].st;R[o].st=0;}
}
void push_up(int o,int l,int r){R[o].mx=max(R[o<<1].mx,R[o<<1|1].mx);R[o].mn=min(R[o<<1].mn,R[o<<1|1].mn);
}
int modify(int o,int l,int r)
{if(a[gl].l<=l&&a[gl].r>=r){if(R[o].mx<=a[gl].h){R[o].mx=R[o].mn=a[gl].h;R[o].st=a[gl].h;return r-l+1;}else if(R[o].mn>a[gl].h)return 0;            }push_down(o,l,r);int mid=(l+r)>>1,ret=0;if(a[gl].l<=mid)ret+=modify(o<<1,l,mid);if(a[gl].r>mid)ret+=modify(o<<1|1,mid+1,r);push_up(o,l,r);return ret;
}int main()
{int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);int bd=0;for(int i=1;i<=n;i++)scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].h),a[i].r--,bd=max(bd,a[i].r);int ans=0;memset(R,0,sizeof R);for(int i=1;i<=n;i++){gl=i;ans+=modify(1,1,bd);}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/mgnfcnt/p/9464389.html

SKYLINE UVALive - 4108相关推荐

  1. DP UVALive 6506 Padovan Sequence

    题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...

  2. LeetCode 218. The Skyline Problem

    题目地址: 注意:做这道题前建议先做这道题Rectangle Area II - LeetCode 看这篇博客:LeetCode 850. Rectangle Area II A city's sky ...

  3. skyline粒子效果xml获取

    skyline的粒子效果是有一堆复杂的xml配置而成,代码创建的时候需要根据xml来生成对象,鉴于xml格式官方并没详细提供,可以先用terraexplorer手动创建一个粒子效果对象,再用代码去找到 ...

  4. [Swift]LeetCode218. 天际线问题 | The Skyline Problem

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. The UVALIVE 7716 二维区间第k小

    The UVALIVE 7716 二维区间第k小 /** 题意:给一个n * n的矩阵,有q个查询每次查询r,c,s,k表示已(r,c)为右上角 大小为s的正方形中 第k小的元素n <= 250 ...

  6. OpenStack Skyline 现代化的管理界面

    目录 文章目录 目录 Skyline 安装部署 软件架构 Skyline 官方项目地址:https://opendev.org/skyline/skyline-apiserver Skyline 是由 ...

  7. skyline三维模型规格

    (一) 每个由skyline制作的数字城市都会包含一些三维模型. 所有这些模型的纹理的总和不应该大于300k . 这些模型代表着这个城市的地标性建筑物或古迹. Skyline Software Sys ...

  8. 利用GoogleEarth影像打造Skyline MPT案例(转载)

    转自:http://www.myexception.cn/go/1898027.html 利用GoogleEarth影像制作Skyline MPT案例 说明 本案例实现内容:影像的获取.Skyline ...

  9. vue + skyline 搭建 一个开发环境

    1.之前用的是ext +  skyline搭建环境 ,正好最近是做前端的事情,有时间用vue + skyline 搭建一个三维场景 2.准备vue 2.x  ,UI 用的是iview 和element ...

最新文章

  1. 关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题
  2. 机器学习02-分类、逻辑回归
  3. 开始Unity3D参观考察
  4. C语言中一个指针传递问题的分析
  5. 【asm】汇编器yasm使用说明
  6. IReport+JasperReport系列的坑(二)CloumnFooter与Detail之间有缝隙
  7. 利用java打印心型图案
  8. 中标麒麟桌面系统自定义屏保
  9. swiper 上滑触发_在绝地求生加入滑铲等战术动作会怎么样?你们想过吗?
  10. AndroidStudio输入生日计算星座
  11. 艾永亮:时代的较量,谁在定义四个轮子的未来?
  12. echarts漏斗图鼠标移入时内部文字阴影/描边
  13. GPG Overview
  14. VMware Harbor 开源的Docker Registry管理项目
  15. 大一python期末考试难吗_python期末考试复习
  16. Hyper-V虚拟机启动出现黑屏光标闪动
  17. 华为 S5700 交换机 批量修改端口方法
  18. [29] Window PowerShell DSC 学习系列----如何备份数据库和解决一个MS Server 2008上的大坑?
  19. STM32实现用DAC播放wav音频
  20. 金蝶钉钉对接方案介绍

热门文章

  1. PyCharm设置自动换行
  2. 【电路补习笔记】10、电感式开关电源(BUCK 降压电路)
  3. 如何在MyBatis中优雅的使用枚举
  4. Spring Boot配置跨域访问策略
  5. mac下卸载jdk1.7
  6. 前端面试题Vue-cli目录汇总
  7. [React]你有用过哪些React的表单库吗?说说它们的优缺点
  8. React开发(201):react代码分割之打包导出
  9. 前端学习(2686):重读vue电商网站7之登录预校验
  10. 前端学习(1413):多人管理33修改2(未能完结)