【数据结构•堆】轮廓线

题目描述

轮廓线
  • 每一个建筑物用一个三元组表示(L, H, R), 表示左边界, 高度和右边界。
  • 轮廓线用X, Y, X, Y…这样的交替式表示。
  • 右图的轮廓线为: (1, 11, 3, 13, 9, 0, 12, 7, 16,3, 19, 18, 22, 3, 23, 13, 29, 0) 。
  • 给N个建筑,求轮廓线。

 

输入输出格式

输入格式:

  输入数据共 n+1 行。
  第一行,一个整数n。( n <= 10^4 )
  第 2 至 n+1 行,每行有3个整数:L、H、R,分别表示一个建筑物:左边界、高度、右边界,数据均小于 2^30 。

输出格式:

  输出数据一行,建筑物的轮廓线,表示为:x y x y x y …………
  (注:整数与整数之间用一个空格间隔)

输入输出样例

输入样例#1:

8
1 11 5
2 6 8
3 13 9
12 7 16
15 3 26
19 18 22
23 13 29
24 5 28

输出样例#1:

1 11 3 13 9 0 12 7 16 3 19 18 22 3 23 13 29 0 

提示信息

  数据范围:
   30%数据,n <= 10^2。
   50%数据,n <= 10^3。
   100%数据,n <= 10^4。
 

算法分析:

题目的意思有点难看懂,但通过观察样例数据可以发现,对于任意坐标,设为a[i].

则a[i]>a[i-1] 活a[i]<a[i-1]时输出a[i]与i

 

 那么,这就只是一个离散化的little problem

上代码:
 

#include<bits/stdc++.h>
using namespace std;
struct D{
	int w1;//矩形左边界坐标
	int w2;//矩形右边界坐标
	int h;//矩形高
}read[10001];
int sor[10001];
int a[10001],maxn,sn,n;//a[i]为坐标为i的最大高度,maxn为离散化后最大坐标,sn位坐标个数
map<int,int> m;//数据过小,可以用map
int rever[10001];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>read[i].w1>>read[i].h>>read[i].w2;
		sor[++sn]=read[i].w1;
		sor[++sn]=read[i].w2;	
	}
	int cnt=0;
	sort(sor+1,sor+sn+1);
	for(int i=1;i<=sn;i++)
	{
		if(sor[i]!=sor[i-1]) 
		{
			m[sor[i]]=++cnt;
			rever[cnt]=sor[i];
		}
	}//离散化
	for(int i=1;i<=n;i++)
	{
		read[i].w1=m[read[i].w1];
		read[i].w2=m[read[i].w2];
		maxn=max(maxn,read[i].w2);
		for(int j=read[i].w1+1;j<=read[i].w2;j++) a[j]=max(a[j],read[i].h);//寻找a[i]
	}
	for(int i=1;i<=maxn+1;i++)
	{
		if(a[i]>a[i-1]||a[i]<a[i-1])
		{
			cout<<rever[i-1]<<' '<<a[i]<<' ';
		}
	}
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/73856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

备战秋招012(20230808)

文章目录 前言一、今天学习了什么&#xff1f;二、动态规划1.概念2.题目 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 提示&#xff1a;以下是本篇文章正文…

最新版彩虹知识付费商城源码 V3.4

介绍 最新彩虹知识付费商城初创体验版&#xff0c;支持二级分类&#xff0c;多级分销&#xff0c;秒杀&#xff0c;砍价&#xff0c;团购&#xff0c;首页继续浏览&#xff0c;分站个人虚拟余额自定义&#xff0c;最新批量对接&#xff0c;批量下载图片&#xff0c;批量替换标…

安装Tomac服务器——安装步骤以及易出现问题的解决方法

文章目录 前言 一、下载Tomcat及解压 1、选择下载版本&#xff08;本文选择tomcat 8版本为例&#xff09; 2、解压安装包 二、配置环境 1、在电脑搜索栏里面搜索环境变量即可 2、点击高级系统设置->环境变量->新建系统变量 1) 新建系统变量&#xff0c;变量名为…

每日一学——OSI参考模型

OSI参考模型&#xff08;Open Systems Interconnection Reference Model&#xff09;是国际标准化组织&#xff08;ISO&#xff09;制定的一个网络通信协议的概念框架。它将网络通信划分为七个层次&#xff0c;每个层次负责不同的功能和任务&#xff0c;从物理层到应用层依次为…

docker pull 设置代理 centos

On CentOS the configuration file for Docker is at: /etc/sysconfig/docker 用 root 权限打开 text editor sudo gedit 注意 加引号 Adding the below line helped me to get the Docker daemon working behind a proxy server: HTTP_PROXY“http://<proxy_host>:&…

vscode-启动cljs

打开vscode &#xff0c;打开cljs项目文件 先npm installvscode安装插件Calva: Clojure & ClojureScript启动REPL 选择Start yout project with a REPL and connect(a.k.a. jack) 后选择shadow-cljs&#xff0c;然后选择shadow&#xff0c;如果需要选择build的话&#xf…

设计模式行为型——模板模式

目录 模板模式的定义 模板模式的实现 模板模式角色 模板模式类图 模板模式举例 模板模式代码实现 模板模式的特点 优点 缺点 使用场景 注意事项 实际应用 模板模式的定义 模板模式&#xff08;Template Pattern&#xff09;属于行为型设计模式&#xff0c;又叫模版…

财报解读:继续押注Disney+,迪士尼距离盈利还有多远?

迪士尼最新一季的“答卷”&#xff0c;透露着不小的寒气。 近日&#xff0c;迪士尼披露了2023财年第三季度&#xff08;自然年2023年Q2&#xff09;业绩报告&#xff0c;营收223.3亿美元&#xff0c;同比仅增长4%&#xff0c;低于市场预期的225.1亿美元&#xff1b;归母净亏损…

unity修改单个3D物体的重力的大小该怎么处理呢?

在Unity中修改单个3D物体的重力大小可以通过以下步骤实现&#xff1a; 创建一个新的C#脚本来控制重力&#xff1a; 首先&#xff0c;创建一个新的C#脚本&#xff08;例如&#xff1a;GravityModifier.cs&#xff09;并将其附加到需要修改重力的3D物体上。在脚本中&#xff0c…

Docker Desktop 启用 Kubernetes 失败后处理

一、环境 Windows 10 C:\Users\zhuji>docker --version Docker version 24.0.2, build cb74dfc 二、问题 在setting -> Kubernetes 中&#xff0c;选中 Enable Kubernetes 后&#xff0c;长时间显示 Starting ... &#xff0c;在Images中显示几个自动下载的镜像后&…

Photoshop窗口->排列菜单下进行匹配缩放/位置/旋转

首先&#xff0c;在Photoshop中打开4张以上图片&#xff0c;并选择“窗口”->“排列”->"四联"&#xff1a; 将鼠标移动至其中一张图片中&#xff0c;按住“Z”键&#xff0c;拖动鼠标&#xff0c;调整图片缩放比例至60.55%&#xff0c; 再选择“窗口”->“…

【Vue3 博物馆管理系统】使用Vue3、Element-plus菜单组件构建前台用户菜单

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 [第三章 使用Vue3、Element-plus菜单组件构建轮播图] [第四章 使用Vue3、Element-plus菜单组件构建组图文章] 文章目…

MySQL8.xx一主两从复制安装与配置

搭建环境: 查看系统版本cat /etc/redhat-release [rootwww tools]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 查看内核版本cat /proc/version 目标: 一主两从 主机IP 主机名称 端口 搭建环境 安装目录192.168.1.100 docker…

Scratch 之 3D 介绍及教程

第一章 为什么 3D 很难&#xff1f; 1.1 3D 难在何处&#xff1f; 3D 之所以会使我们觉得困难&#xff0c;是因为 Scratch 软件只有两个坐标轴&#xff0c;既&#xff1a;X轴、Y轴。 2维坐标系 而 3D 却拥有三个坐标轴&#xff1a; 3维坐标系 怎么办&#xff1f;很简单&…

UGUI事件系统EventSystem

一. 事件系统概述 Unity的事件系统具有通过鼠标、键盘、游戏控制柄、触摸操作等输入方式&#xff0c;将事件发送给对象的功能。事件系统通过场景中EventSystem对象的组件EventSystem和Standalone Input Module发挥功能。EventSystem对象通常实在创建画布的同时被创建的&#xf…

设计师常用的UI设计软件推荐

如今&#xff0c;随着互联网时代设计岗位的演变&#xff0c;近年来出现了一位新兴而受欢迎的专业UI设计师。对于许多对UI设计感兴趣或刚刚接触UI设计的初学者来说&#xff0c;他们不禁想知道&#xff0c;成为一名优秀的UI设计师需要掌握哪些UI软件&#xff1f;今天&#xff0c;…

线性扫描寄存器分配算法介绍

线性扫描寄存器分配 文章目录 线性扫描寄存器分配1. 算法介绍2. 相关概念3. 算法的实现3.1 伪代码3.2 图示 参考文献 论文地址&#xff1a; Linear Scan Register Allocation ​ 我们描述了一种称为线性扫描的快速全局寄存器分配的新算法。该算法不基于图形着色&#xff0c;而…

配置网络设置和修改主机名

bash 题目&#xff1a; 在 node1 上配置网络&#xff0c;要求如下&#xff1a; 主机名&#xff1a;node1.domain8.rhce.cc IP地址: 172.25.250.10/24 ##注意掩码 网关&#xff1a; 172.25.250.250 DNS&#xff1a; 172.25.250.250 ##名称服务器 做法&#xff1a; nmtui 回车…

Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)

一.Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权) 本次测试使用数据库实例SqlServer2008r2版 错误详细&#xff1a; 标题: Microsoft SQL Server Management Studio ------------------------------ 还原数据库“Mvc_HNHZ”时失败。 (Microsoft.SqlServer.…

基于Matlab实现小偷体貌识别仿真(附上源码+数据集)

小偷体貌识别是一种应用于安全领域的重要技术&#xff0c;它利用计算机视觉和机器学习的方法&#xff0c;通过对监控视频中的人体特征进行提取和分析&#xff0c;来识别出可能的小偷。在本文中&#xff0c;我们将介绍如何使用Matlab实现小偷体貌识别的仿真。 文章目录 介绍部分…
最新文章