17.看楼房

news2024/11/15 4:53:23

Description

小张在暑假时间进行了暑期社会调查。调查的内容是楼房的颜色如何影响人们的心情。于是他找到了一个楼房从左到右排成一排的小区,这个小区一共有

n

栋楼房,每个楼房有一个颜色

c_i

和一个高度

h_i

。小张调查的内容为每次他站在第

i

栋楼和第

i+1

栋楼之间向左看,他记录下此时他看到的楼房颜色数作为他的调查结果。

由于小张在暑假时间沉迷游戏来不及做实地调查,只好拜托你将调查结果告诉他。

Input

本题有多组数据。

每组数据第一行一个整数

n

。表示有

n

栋楼房从左到右排成一排。

第二行

n

个数,表示每个楼房的颜色

(1 \leq c_i \leq 10^6 )

第三行

n

个数,表示每个楼房的高度

(1 \leq c_i \leq 10^9 )

数据保证所有组数据的

\sum{n} \leq 1000000

Output

每组数据输出

n

个数,第

i

个数表示他站在第

i

栋楼和第

i+1

栋楼之间向左看,能够看到的楼房颜色数。

Notes

在从左向右看楼房的时候,左边较矮的楼房会被右边较高的楼房挡住。


C++整体代码

#include <iostream>   
#include <vector>   
#include <stack>   
#include <cstdio>
using namespace std;

int main() {
    int num;
    cin >> num;
    stack<int> stack_c, stack_h;
    while (num--) {
        int n;
        cin >> n;
        stack_c = stack<int>();
        stack_h = stack<int>();
        vector<long long> c_class(1000000, 0);
        vector<long long> c(n,0), h(n,0);
        long long c_num = 0;
        //输入楼房颜色   
        for (int i = 0; i < n; i++) {
            scanf("%lld", &c[i]);
        }
        //输入楼房高度  
        for (int i = 0; i < n; i++) {
            scanf("%lld", &h[i]);
        }
        //遍历楼房   
        for (int i = 0; i < n; i++) {
            if (stack_h.empty() || h[i] < stack_h.top()) {//如果栈顶为空或者新入栈元素小于栈顶   
                stack_h.push(h[i]);
                stack_c.push(c[i]);

                if (++c_class[c[i]] == 1) c_num++;
            }
            else if (stack_h.top() <= h[i]) {
                while (!stack_h.empty() && stack_h.top() <= h[i]) {

                    if (--c_class[stack_c.top()] == 0) c_num--;
                    stack_h.pop();
                    stack_c.pop();
                }
                    stack_h.push(h[i]);
                    stack_c.push(c[i]);

                    if (++c_class[c[i]] == 1) c_num++;

                
            }
            printf("%lld%c", c_num, i == n - 1 ? '\n' : ' ');
        }
    }
    return 0;
}

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

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

相关文章

2240. 买钢笔和铅笔的方案数

文章目录 Tag题目来源题目解读解题思路复杂度分析写在最后 Tag 【枚举】【数学】 题目来源 2240. 买钢笔和铅笔的方案数 题目解读 现在你有一笔钱 total&#xff0c;用来购买钢笔和铅笔&#xff0c;它们的价格分别为 cost1 和 cost2&#xff0c;试问你可以有多少种不同的购…

CASAIM与北京协和医院达成合作,通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本

近期&#xff0c;CASAIM与北京协和医院达成合作&#xff0c;通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本&#xff0c;在实验样本的一致性和实验研究的严谨性原则下设计方案&#xff0c;推动产学研一体化发展。 北京协和医院是集医疗、教学、科研于一体的现代化综合…

【Tkinter系列04/15】界面小部件(选择钮、行编辑器)

九. 小部件Checkbutton 复选框小部件&#xff08;有时称为 “复选框”&#xff09;是允许用户阅读和 选择双向选项。上图显示了如何 复选按钮在关闭 &#xff08;0&#xff09; 和打开 &#xff08;1&#xff09; 状态下查看 实现&#xff1a;这是两个复选按钮的屏幕截图 使用 …

C#基础详解

Excerpt C#是微软公司发布的一种面向对象的、运行于 .NET Framework和 .NET Core&#xff08;完全开源&#xff0c;跨平台&#xff09;之上的高级程序设计语言。- C#是一种安全的、稳定的、简单的、优雅的&#xff0c;由C和C衍生出来的面向对象的编程语言。它在继承C和C强大功能…

threejs加载file格式的gltf模型,使用input type=file加载gltf模型

项目场景&#xff1a; 使用input选择gltf加载模型 问题描述 gltf有多个文件如何塞给GLTFLoader加载&#xff08;不知道怎么办&#xff09;。 解决方案&#xff1a; 最后在threejs官网看到解决办法 解决思路 URL.createObjectURL(bolb/file) 1&#xff1a;input输入文件获…

HummerRisk V1.4.0发布

大家好&#xff0c;HummerRisk 1.4.0和大家见面了&#xff0c;在这个版本中我们变更了多云检测的底层逻辑&#xff0c;增加了每次检测的project概念&#xff0c;更好的去支持检测历史和检索需要&#xff0c;增加阿里云最佳实践中资源监控检测规则&#xff0c;增加资源态势中的细…

TypeScript_队列结构-链表

队列 队列&#xff08;Queue&#xff09;&#xff0c;它是一种受限的线性表&#xff0c;先进先出&#xff08;FIFO First In First Out&#xff09; 受限之处在于它只允许在队列的前端&#xff08;front&#xff09;进行删除操作而在队列的后端&#xff08;rear&#xff09;进…

python后端,一个账户,多设备登录管理

一个账号&#xff0c;多台设备同时登陆的问题&#xff0c;设计以及实现 参考这篇文章&#xff1a; https://www.alibabacloud.com/help/zh/tair/use-cases/manage-multi-device-logon-from-a-single-user-by-using-tairhash1.0 设计思路 利用的是Redis&#xff0c;主设备的保…

Webgoat-Hijack a session通关答题教程

Webgoat-Hijack a session Hijack session是会话劫持&#xff0c;先了解需要用到的知识&#xff1a; Cookie原理&#xff1a; 1.客户端向服务端发起请求 2.服务端返回cookie&#xff0c;自己也保存了一份 3.客户端收到后&#xff0c;将cookie也保存起来 4.客户端再次发起请求时…

某物联网数智化园区行业基于 KubeSphere 的云原生实践

公司简介 作为物联网 数智化园区一体化解决方案提供商&#xff0c;我们致力于为大中型园区、停车场提供软硬件平台&#xff0c;帮助园区运营者实现数字化、智能化运营。 在使用 K8s 之前我们使用传统的方式部署上线&#xff0c;使用 spug&#xff08;一款轻量级无 Agent 的自…

算术化电路中如何使用定制gates?

1. 引言 现有ZKP证明系统中&#xff0c;除关注proof size和verification time之外&#xff0c;Prover Time是一个重要瓶颈。 当侧重Prover Time时&#xff0c;可考虑STARK方案。并借助recursive STARKSNARK&#xff0c;来获得small proof。 Prover Time&#xff1a; 直接取…

【VM】保姆级VM算法平台二次开发之-环境配置

VM算法平台二次开发 1.下载Visual Studio 20222.项目的创建 C# 应用3.设置属性&#xff0c;去掉属选型32位4. 进行引用的导入工作5. 重新加载&#xff0c;查看引用6. 工具箱添加Dll的依赖。&#xff08;只需要加载一次就行&#xff09; 1.下载Visual Studio 2022 可以直接在官…

PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化实践技术应用

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

未来芯片设计领域的药明康德——青芯如何在N个项目间游走平衡

总部位于上海张江的青芯半导体&#xff08;CyanSemi&#xff09;&#xff0c;ASIC定制设计是其核心业务之一。 青芯在单纯的设计服务维度之上&#xff0c;打造了从设计到生产的一套完整ASIC定制业务&#xff0c;不仅做芯片设计&#xff0c;还提供封装、测试服务&#xff0c;也…

ikuai配置内外网及动态域名,外部可以直接通过域名进行访问私网的网络服务环境。

1.安装ikuai虚拟机&#xff0c;这里可以自行百度&#xff0c;网上一堆教程用vm安装ikuai 2.重要的&#xff0c;配置网卡&#xff0c; 先上图在说。下图是虚拟机配置了两个网卡&#xff0c; 第一个网卡vmnet0配置为自动桥接模式。 第二个网卡vmnat1配置为NAT模式。 配置前需要…

C语言递归写n的k次方

int Func(int n,int k) {if (k 0){return 1;}else if (k > 1){return n * Func(n, k - 1);;}}int main() {int i 0;int j 0;printf("请输入数n和他的k次方\n");scanf("%d %d", &i,&j);int r Func(i,j);printf("%d的%d次方 %d\n"…

气传导耳机排名,四款市面上热销相当不错的气传导耳机推荐

​在当今快速的生活节奏中&#xff0c;气传导耳机成为了越来越多人的选择。它们以出色的音质和舒适度而广受好评。在本文中&#xff0c;我们将为您推荐四款市面上热销相当不错的气传导耳机&#xff0c;帮助你找到最适合自己的耳机。 推荐一&#xff1a;NANK南卡00压开放式耳机…

spring cloud seata集成

目录 一、seata使用场景 二、seata组成 三、seata服务端搭建 四、客户端使用seata 4.1 客户端增加undo_log表 4.2 客户端增加seata相关配置 4.3 客户端使用注解 五、测试 一、seata使用场景 微服务中&#xff0c;一个业务涉及到多个微服务系统&#xff0c;每个微服务…

elementUI中的table动态表单记录

form表单与table一起使用 之前一直以为form表单是单独使用&#xff0c;现在联动起来发现只是套了一层外壳&#xff0c;并不是很麻烦的事情 form的单独使用 <el-form :model"ruleForm" status-icon :rules"rules" ref"ruleForm" label-widt…

前端进阶之——模块化

在做项目的时候越来越发现模块化的重要性&#xff0c;做好模块化开发不仅给后期的维护带来不少好处而且大大提升项目开发效率&#xff0c;接下来整理一下模块化相关知识吧。 模块化开发的优点 封装方法、提高代码的复用性、可维护性和可读性隔离作用域&#xff0c;避免污染全…