【数据结构•堆】轮廓线

题目描述

轮廓线
  • 每一个建筑物用一个三元组表示(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.mzph.cn/news/34604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初步制作做一个AI智能工具网站,持续更新

文章目录 介绍AI对话AI绘画AI音视频AI图片处理AI小工具体验 介绍 网页有五大部分&#xff1a;AI对话、AI绘画、AI音视频、AI 图片处理、AI小工具。 AI对话 AI对话是指人工智能技术在模拟人类对话交流方面的应用。通过使用自然语言处理和机器学习算法&#xff0c;AI对话系统可…

SpringBoot复习:(40)@EnableConofigurationProperties注解的用法

一、配置文件&#xff1a; server.port9123 二、配置类&#xff1a; package cn.edu.tju.config;import com.mysql.fabric.Server; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.context.properties.EnableConfigu…

‘大数据技术与应用’和‘数据科学与大数据技术’有什么区别

一、侧重点不同 ‘大数据技术与应用’主要侧重于大数据的存储、处理和分析技术、包括数据挖掘、机器学习、数据仓库、分布式计算等方面的研究&#xff0c;旨在开发大数据相关的应用程序和系统&#xff0c;以满足商业和企业的需求。 ‘数据科学与大数据技术’则更加注重数据本…

Linux 终端命令之文件浏览(3) less

Linux 文件浏览命令 cat, more, less, head, tail&#xff0c;此五个文件浏览类的命令皆为外部命令。 hannHannYang:~$ which cat /usr/bin/cat hannHannYang:~$ which more /usr/bin/more hannHannYang:~$ which less /usr/bin/less hannHannYang:~$ which head /usr/bin/he…

Vue: el-form 自定义校验规则

Vue 的 el-form 组件可以使用自定义校验规则进行表单验证。自定义校验规则可以通过传递一个函数来实现&#xff0c;该函数接受要校验的字段的值作为参数&#xff0c;并返回一个布尔值或一个 Promise 对象。 下面是一个示例&#xff0c;演示如何在 el-form 中使用自定义校验规则…

Python“牵手”京东工业商城商品详情数据方法介绍

京东工业平台&#xff08;imall.jd.com&#xff09;是一个 B2B 电商平台&#xff0c;提供了丰富的工业品类商品&#xff0c;涵盖了机械、化工、建材、劳保用品等品类。如果您需要采集京东工业平台的商品详情数据&#xff0c;可以尝试以下步骤&#xff1a; 选定目标品类和 SKU …

433. 最小基因变化

基因序列可以表示为一条由 8 个字符组成的字符串&#xff0c;其中每个字符都是 A、C、G 和 T 之一。 假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如&#xff0c;"AACCGGTT" -->…

React组件实例的三大属性

React组件实例的三大属性分别是&#xff1a;state、props和refs。 State属性&#xff1a;用来存储组件内部的状态&#xff0c;只能在组件内部修改。当state被修改时&#xff0c;React会重新渲染组件。 Props属性&#xff1a;用来传递父组件的数据到子组件中&#xff0c;是组件…

Redis_哨兵模式

9. 哨兵模式 9.1 简介 当主库宕机&#xff0c;在从库中选择一个&#xff0c;切换为主库。 问题: 主库是否真正宕机?哪一个从库可以作为主库使用?如何实现将新的主库的信息通过给从库和客户端&#xff1f; 9.2 基本流程 哨兵主要任务&#xff1a; 监控选择主库通知 会有…

Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.

第一步&#xff1a;下载Visual Studio 2019 下载地址&#xff1a; https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步&#xff1a;安装组件 选择单个组件&#xff0c;勾选以下两个组件 其他错误&#xff1a; 无法打开文件“python37.li…

AWS上传私有windows server2019镜像64位

一.制作自己的镜像 我使用的是esxi&#xff0c;建立一个windows虚拟机&#xff0c;开启。 根据aws官方文档&#xff0c;虚拟机里的系统重要需要注意以下几点&#xff1a; 1.只有一张网卡&#xff0c;ip获取配置成dhcp。 2.关闭系统防火墙。 3.开启windows rdp 远程功能。 …

iOS开发-WebRTC本地直播高分辨率不显示画面问题

iOS开发-WebRTC本地直播高分辨率不显示画面问题 在之前使用WebRTC结合ossrs进行推流时候&#xff0c;ossrs的播放端无法看到高分辨率画面问题。根据这个问题&#xff0c;找到了解决方案。 一、WebRTC是什么 WebRTC是什么呢&#xff1f; WebRTC (Web Real-Time Communicatio…

【ES】笔记-函数参数默认值

函数参数默认值 ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数&#xff0c;一般放到最后 function add(a,b,c10){return abc}let resultadd(1,2);console.log(result);2. 与解构赋值结合 function connect({host"127.0.0.1",username,password,port…

FlinkCDC能读取到快照,但是无法输出更新数据

FlinkCDC能读取到快照&#xff0c;但是无法输出更新数据 发现是并行度问题&#xff0c;当我的并行度超过1的时候就无法捕获更新。 public static void main(String[] args) throws Exception {System.setProperty("HADOOP_USER_NAME", "lcq");Configurati…

python selenium如何保存网站的cookie用于下次自动登录

## 一、python selenium如何保存网站的cookie 使用Selenium保存网站的Cookie非常简单。下面是一个示例&#xff0c;展示了如何使用Selenium打开网站&#xff0c;然后保存获取到的Cookie&#xff1a; from selenium import webdriver# 初始化浏览器 browser webdriver.Chrome…

数据结构与算法-数组(附阿里面试题)

一 面试经典&#xff1a; 给你一个文件里面包含全国人民&#xff08;14亿&#xff09;的年龄数据&#xff08;0~180&#xff09;&#xff0c;现在要你统计每一个年龄 有多少人&#xff1f; 给定机器为 单台2CPU2G内存。不得使用现成的容器&#xff0c;比如map等。&am…

多个 Github 账户访问 Github

文章目录 多个 Github 账户访问 Github背景步骤 参考 多个 Github 账户访问 Github 背景 如果我想在这台电脑上同时使用两个 Github 账号怎么办呢&#xff1f; 你主机上的 SSH 公钥只能标识出一个账号。如果需要使用另外一个git账号&#xff0c;访问仓库&#xff0c;你需要创…

Java基础篇--String 类

Java中的String类是用于处理字符串的核心类之一。它属于Java的标准库&#xff0c;并提供了许多操作字符串的方法。 String类是不可变的&#xff0c;这意味着一旦创建了一个String对象&#xff0c;它的值就不能被改变。当对字符串进行操作时&#xff0c;实际上是创建了一个新的…

【博客695】k8s subPathExpr作用

k8s subPathExpr作用 场景&#xff1a; 对于一个deployment或者job拉起的服务&#xff0c;所有pod都是一样的配置&#xff0c;如果都挂载了宿主机的同一个目录&#xff0c;那么就会互相干扰&#xff0c;我们希望挂载相同目录&#xff0c;且在这个目录下&#xff0c;每个pod建立…

“深入理解JVM:Java虚拟机的工作原理揭秘“

标题&#xff1a;深入理解JVM&#xff1a;Java虚拟机的工作原理揭秘 摘要&#xff1a;本文将深入解析Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;包括JVM的组成部分、类加载过程、运行时数据区域、垃圾回收机制等。通过详细的代码示例&#xff0c;帮助读者更…