17.看楼房

news/2025/1/15 21:44:24/

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.ppmy.cn/news/1077958.html

相关文章

python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作

xlwings 其他的一些单元格读取写入操作网上很多&#xff0c; 下面就写些如何设置单元格的 字体对齐&#xff0c;字体大小、边框&#xff0c; 合并单元格&#xff0c; 这些设置。 import xlwings as xwapp xw.App(visibleTrue, add_bookFalse) app.display_alerts False #…

vue router 路由跳转获取不到参数

问题&#xff1a; 路由传参一直不能获取到参数, 未出现报错 原因&#xff1a; 混淆 query 和 params 的使用方法, 在使用 params 传参时错误的使用了 path 代码&#xff1a; 正确写法1&#xff1a; 使用path要对应query ...this.$router.push({path: /Health,query: {title:…

❤ Uniapp使用

❤ Uniapp使用 一、介绍 uni-app官网&#xff1a;https://uniapp.dcloud.io/api/media/image?idpreviewimage 微信小程序官网&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html 二、使用 1、uniapp 实现图片预览 单图预…

微信小程序发布一个npm包

参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html 同npm一样流程 npm install weixin_heath_apis

学校头歌作业1_2四则运算(头歌作业[Python])

在CSDN上补充前几期的内容 第1关&#xff1a;整数四则运算 """ 试编程实现分两行输入两个非零整数&#xff0c;并在4 行中按顺序输出两个数的加、减、乘、除的计算结果。 要求输出与如下示例格式相同&#xff0c;符号前后各有一个空格。 """#输…

华为数通方向HCIP-DataCom H12-821题库(单选题:161-180)

第161题 以下关于 URPF(Unicast Reverse Path Forwarding) 的描述, 正确的是哪一项 A、部署了严格模式的 URPF,也能够可以同时部署允许匹配缺省路由模式 B、如果部署松散模式的 URPF,默认情况下不需要匹配明细路由 C、如果部署松散模式的 URPF,如果需要检查默认路由,则…

【论文阅读】自动驾驶中车道检测系统的物理后门攻击

文章目录 AbstractIntroduction 论文题目&#xff1a; Physical Backdoor Attacks to Lane Detection Systems in Autonomous Driving&#xff08;自动驾驶中车道检测系统的物理后门攻击&#xff09; 发表年份&#xff1a; 2022-MM&#xff08;ACM International Conference on…

关于在香橙派安装mysql时遇到的坑

前言 基础环境&#xff1a;硬件&#xff1a;香橙派5操作系统&#xff1a;openkylincpu架构&#xff1a;arm 过程&#xff1a;最近有个任务&#xff0c;要在新的环境中验证一些服务是否可用。目的时向全国产化靠拢。 需要在香橙派上安装openkylin&#xff0c;一开始尝试的是香橙…