欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S40505.5-5 解读图腾
5-5 解读图腾
解读图腾
穿过铁门,是一片由发光石柱组成的广场。石柱排列成一排,高低不一,像是一群沉默的哨兵。Echo说这些石柱是Zero的"图腾"——每根石柱代表一个历史时刻的能量峰值。
"要解读图腾。"Echo飘到第一根石柱前,"找出有多少对石柱可以互相看见——中间没有更高的石柱挡住。"
"咋个找?"CC问,"一个个看?"
"从右往左看。"你说,"每根石柱往右看,能被它看见的石柱必须比它矮,而且中间不能有更高的。这像站岗——矮的站在高的前面,高的挡住后面所有的。"
"那就维护一排站岗的哨兵。"你说,"从右往左走,每遇到一根石柱,就把比它矮的哨兵撤掉——因为它们被挡住了。然后这根石柱自己站上去,成为新的哨兵。站岗的哨兵数量,就是能看见的对数。"
CC在旁边看着,忽然说:"这就像……排队买饭。高的站在前面,矮的躲在后面,只能看见前面那个最高的。"
"差不多。"
你开始写。从右往左扫描,维护一个严格递增的哨兵队列。每遇到一根石柱,弹出队列里所有比它矮的——它们被挡住了。然后把它压进队列。队列的长度就是当前能看见的对数。
屏幕上跳出了结果。第47号石柱——最高的一根——能看见47根石柱。
"又是47。"CC说。
"最高的一根。"Echo说,"它站在最前面,挡住了后面所有的视线。"
"但它也能看见所有人。"你说。
"对。"Echo说,"看见所有人,也被所有人仰望。"
题目描述
根石柱,高度已知。求有多少对 (),使得 和 之间没有比 更高的石柱。
输入格式
。然后 个高度。
输出格式
能看见的对数。
输入样例
3
1 2 3
输出样例
0 0
提示
- 单调栈。从右往左扫描,维护严格递减的栈。
- 每个元素入栈前,弹出所有比它小的元素。
- 栈的大小即为能看见的对数。
图腾解读完毕,广场尽头出现了一座高架桥——不是普通的桥,是由能量束编织成的通道。Echo飘到桥头,投影被能量束的光芒切割成碎片。
"下一关。"她说,"是构筑篱笆。"
"篱笆?"CC问。
"对。"Echo说,"用能量束围成一圈篱笆,把G-30的核心区域围起来。篱笆的高度要够高,挡住所有外来的入侵者。"
"那不就是找最高的连续段?"你说。
"对。"Echo说,"但不是简单的高——是连续的高。如果中间有一段塌陷了,整个篱笆就断了。"
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |