当前位置: 首页 > news >正文

洛谷 P2866 [USACO06NOV] Bad Hair Day S

题目描述

农夫约翰有 N 头奶牛正在过乱头发节。

每一头牛都站在同一排面朝右,它们被从左到右依次编号为 1,2,⋯,N。编号为 i 的牛身高为 hi​。第 N 头牛在最前面,而第 1 头牛在最后面。

对于第 i 头牛前面的第 j 头牛,如果 hi​>hi+1​,hi​>hi+2​,⋯,hi​>hj​,那么认为第 i 头牛可以看到第 i+1 到第 j 头牛。

定义 Ci​ 为第 i 头牛所能看到的牛的数量。请帮助农夫约翰求出 C1​+C2​+⋯+CN​。

输入格式

输入共 N+1 行。

第一行为一个整数 N,代表牛的个数。
接下来 N 行,每行一个整数 ai​,分别代表第 1,2,⋯,N 头牛的身高。

输出格式

输出共一行一个整数,代表 C1​+C2​+⋯+CN​。

//想要找出一头牛可以看见那几头牛比较困难, 我们可以用单调栈来控制当前这头牛可以被几头牛看见  栈中的元素就是可以看见当前牛的个数  只需维护一个单调栈就可以找出所有可以看见当前牛的数量 如果当前牛小于栈顶元素就让他加入栈  否则就计算出当前牛可以被几头牛看见

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int n,t;
LL ans;
stack <int> a;
int main() {
    cin>>n;
    for (int i=1; i<=n; i++) {
        cin>>t;
        while (!a.empty() && a.top() <= t) a.pop(); //如果当前牛的身高高于栈顶元素 就让栈中的牛出栈
        ans+=a.size();//计算当前牛可以被几头牛看见
        a.push(t);//入栈
    }
    cout<<ans;
    return 0;
}

相关文章:

  • Untiy基础学习(五)Inspector窗口中可编辑的变量
  • Linux之用户管理
  • SALOME源码分析: SolverLab
  • 大模型(LLMs)RAG 版面分析——文本分块面
  • Rust的安全卫生原则
  • Java二维码学习
  • Spark,Idea中编写Spark程序 2
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 4 |IMU 死算与校正:惯性导航在资源受限环境的落地
  • 在CentOS环境中安装MySQL数据库保姆级教程
  • 基于 PyQt 的YOLO目标检测可视化界面+ nuitka 打包
  • 工程师 - 汽车分类
  • 基于SpringBoot + HTML 的宠物医院预约管理
  • 硬件工程师面试常见问题(13)
  • TS typeof运算符
  • TS 变量类型生成
  • chili3d调试10 网页元素css node deepwiki 生成圆柱体 生成零件图片
  • RabbitMQ入门基础
  • 表驱动 FSM 在 STM32 上的高效实现与内存压缩优化——源码、性能与实践
  • 如何从GitHub上调研优秀的开源项目,并魔改应用于工作中?
  • 【C++11】其他一些新特性 | 右值引用 | 完美转发
  • 黎巴嫩9年来首次举行地方选举
  • 中国海警局回应日本民用飞机侵闯我钓鱼岛领空:依法警告驱离
  • 澳大利亚大选今日投票:聚焦生活成本与“特朗普问题”
  • 消息人士称以色列政府初步同意扩大对加沙军事行动
  • 辽宁男篮被横扫这一晚,中国篮球的一个时代落幕了
  • CMG亚太总站:没有邀请韩国偶像团体举办巡回演出