SKYLINE UVALive - 4108
我一开始没有想到用线段树,是我学得太僵了...
我们要记录每段的最大高度,而且要组织成区间信息,这要用到线段树
怎么用呢?
线段树维护区间最大值;对于每个线段,先二分至其包含区间,如果最大值>=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相关推荐
- DP UVALive 6506 Padovan Sequence
题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...
- LeetCode 218. The Skyline Problem
题目地址: 注意:做这道题前建议先做这道题Rectangle Area II - LeetCode 看这篇博客:LeetCode 850. Rectangle Area II A city's sky ...
- skyline粒子效果xml获取
skyline的粒子效果是有一堆复杂的xml配置而成,代码创建的时候需要根据xml来生成对象,鉴于xml格式官方并没详细提供,可以先用terraexplorer手动创建一个粒子效果对象,再用代码去找到 ...
- [Swift]LeetCode218. 天际线问题 | The Skyline Problem
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- The UVALIVE 7716 二维区间第k小
The UVALIVE 7716 二维区间第k小 /** 题意:给一个n * n的矩阵,有q个查询每次查询r,c,s,k表示已(r,c)为右上角 大小为s的正方形中 第k小的元素n <= 250 ...
- OpenStack Skyline 现代化的管理界面
目录 文章目录 目录 Skyline 安装部署 软件架构 Skyline 官方项目地址:https://opendev.org/skyline/skyline-apiserver Skyline 是由 ...
- skyline三维模型规格
(一) 每个由skyline制作的数字城市都会包含一些三维模型. 所有这些模型的纹理的总和不应该大于300k . 这些模型代表着这个城市的地标性建筑物或古迹. Skyline Software Sys ...
- 利用GoogleEarth影像打造Skyline MPT案例(转载)
转自:http://www.myexception.cn/go/1898027.html 利用GoogleEarth影像制作Skyline MPT案例 说明 本案例实现内容:影像的获取.Skyline ...
- vue + skyline 搭建 一个开发环境
1.之前用的是ext + skyline搭建环境 ,正好最近是做前端的事情,有时间用vue + skyline 搭建一个三维场景 2.准备vue 2.x ,UI 用的是iview 和element ...
最新文章
- 关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题
- 机器学习02-分类、逻辑回归
- 开始Unity3D参观考察
- C语言中一个指针传递问题的分析
- 【asm】汇编器yasm使用说明
- IReport+JasperReport系列的坑(二)CloumnFooter与Detail之间有缝隙
- 利用java打印心型图案
- 中标麒麟桌面系统自定义屏保
- swiper 上滑触发_在绝地求生加入滑铲等战术动作会怎么样?你们想过吗?
- AndroidStudio输入生日计算星座
- 艾永亮:时代的较量,谁在定义四个轮子的未来?
- echarts漏斗图鼠标移入时内部文字阴影/描边
- GPG Overview
- VMware Harbor 开源的Docker Registry管理项目
- 大一python期末考试难吗_python期末考试复习
- Hyper-V虚拟机启动出现黑屏光标闪动
- 华为 S5700 交换机 批量修改端口方法
- [29] Window PowerShell DSC 学习系列----如何备份数据库和解决一个MS Server 2008上的大坑?
- STM32实现用DAC播放wav音频
- 金蝶钉钉对接方案介绍