当前位置: 首页 > 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;
}

http://www.dtcms.com/a/171187.html

相关文章:

  • 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】其他一些新特性 | 右值引用 | 完美转发
  • 数据库MySQL学习——day8(复习与巩固基础知识)
  • cuDNN 9.9.0 便捷安装-Windows
  • Python读取comsol仿真导出数据并绘图
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.4 数据重复与去重(IDENTITY COLUMN/UNIQUE约束)
  • 软考-软件设计师中级备考 8、进程管理
  • 硬件加速模式Chrome(Edge)闪屏
  • React class 的组件库与函数组件适配集成
  • CSS 变量与原生动态主题实现
  • ES6/ES11知识点 续二
  • 高等数学第三章---微分中值定理与导数的应用(§3.6 函数图像的描绘§3.7 曲率)