poj 3250 单调栈(看到前面的牛的数量)

POJ 3250 Bad Hair Day(单调栈) Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Description Some of Farmer John’s N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of other cows that can see t 阅读详情
题意:一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛后面的其他牛。给出这些牛的高度,要求每头牛可以看到的牛的数量的和。
思路:单调栈(类似2559和3934),栈中按照递减顺序保存牛的高度,对于当前牛判断它入栈的位置。其实stack不必设置h域,stack只存下标即可,找栈中高度用s[下标]就行了。

看到另一种思路:把要求作一下转换,其实就是要求每头牛被看到的次数之和。这个也可以使用单调栈来解决。从左到右依次读取当前牛的高度,从栈顶开始把高度小于或等于当前牛的高度的那些元素删除,此时栈中剩下的元素的数量就是可以看见当前牛的其他牛的数量。把这个数量加在一起,就可以得到最后的答案了。按照这种思路写出的代码更简单。

#include <cstdio>
using namespace std;
#define N 80005
struct point{
    int id,h;
}stack[N];
int n,s[N];
long long  test(){
    int i,top=0;
    long long res = 0;
    stack[top].h = s[0];
    stack[top].id = 0;
    for(i = 1;i<=n;i++){
        while(top>=0 && s[i]>=stack[top].h){
            res += i-stack[top].id-1;
            top--;
        }
        stack[++top].h = s[i];
        stack[top].id = i;
    }
    return res;
}
int main(){
    int i;
    scanf("%d",&n);
    for(i = 0;i<n;i++)
        scanf("%d",&s[i]);
    s[n] = 1000000001;
    printf("%lld\n",test());
}


华为OD机试真题2026双机位C卷 Python&JS 语言 实现【主次关联成环警告】 在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况: 阅读详情

相关推荐

从DIY桌面CNC到工业机器人:手把手教你用LinuxCNC搭建自己的第一台数控系统(基于Xenomai实时补丁)

本文详细介绍了如何使用LinuxCNC和Xenomai实时补丁搭建高性价比的数控系统,从硬件选型到实时系统构建,再到HAL硬件抽象层实战和G代码加工,手把手教你打造从DIY桌面CNC到工业机器人的完整解决方案。

weixin_28727975的博客 288

单调栈

POJ 3250 题目思想: 一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛后面的其他牛。 给出这些牛的高度,要求每头牛可以看到的牛的数量的和。 思路: 把要求作一下转换,其实就是要求每头牛被看到的次数之和。这个可以使用单调栈来解决。 从左到右依次读取当前牛的高度,从栈顶开始把高度小于或等于当前牛的高度的那些...

weixin_45354696的博客 438

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口)

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC

大樱桃的博客 1万+

牛的视野(单调栈问题)

题目:一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛和后面的其他牛的发型。给出这些牛的高度,要求每头牛可以看到的牛的数量的和。 解析:若求每头牛能看到的牛的数量,可以参考https://blog.youkuaiyun.com/Broken_Wave/article/details/82390882,也是使用单调栈 在这里...

Broken_Wave的博客 1995

PS/2鼠标接口协议

一、PS/2鼠标接口        PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用。物理上的PS/2接口有两种类型的连接器:5脚的DIN和6脚的MINI-DIN。        二、鼠标的接口协议原理             PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。但是在相互传输中 ,主机是拥有总线控制权的

Ant's home 1万+

Opencv全景图像处理实战:柱面与透视展开技术详解

本文详细解析了使用OpenCV实现全景图像处理的两种核心技术:柱面展开与透视展开。通过原理拆解与实战代码演示,指导开发者将360度环绕的鱼眼或球面图像转换为可用的平面视图,适用于街景展示、车载环视、室内测量等计算机视觉应用场景。

weixin_29081163的博客 584

POJ3250 牛的视野(单调栈)

一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛后面的其他牛。 给出这些牛的高度,要求每头牛可以看到的牛的数量的和。 把要求作一下转换,其实就是要求每头牛被看到的次数之和。这个可以使用单调栈来解决。 从左到右依次读取当前牛的高度,从栈顶开始把高度小于或等于当前牛的高度的那些元素删除,此时栈中剩下的元素的数量就

Shuyu Fang 7283

【Unity程序技巧】Unity中单例模式管理器

单例模式(Singleton Pattern)是 最简单的设计模式之一

秩沅 1659

【算法】单调栈

目录单调栈的定义:伪代码:应用1.模板题2.视野总和问题3.柱状图中的最大矩形4.最大区间碎碎念: 单调栈的定义: 从名字上就能猜出来,这种数据结构在栈的基础上,栈内的元素是单调有序的,所以单调栈分为单调递增栈和单调递减栈(增减性的划分是根据栈顶到栈底的元素变化规律)(搞不懂为什么定义要从栈顶开始看,栈是从栈底开始加入元素的呀,好像有一点反思维) 单调递增栈: 从栈顶往栈底看,是单调递增的关系(含相等) 单调递减栈: 从栈顶往栈底看,是单调递减的关系(含相等) 例子:现在有一组数:3,4,2,6,4,5

Just__Do__IT__的博客 6846

【知识分享】高速印刷电路板(PCB)寄生参数计算指南

对于高速PCB设计而言,寄生参数一直是令人讨厌的问题,它们会悄悄潜入PCB并在电路中造成严重的破坏,具体来说,它们是渗透到高速电路中的隐藏杂散电容器和电感器,包括由封装引线和长走线形成的电感器、PCB焊盘对金属平面形成的电容器、走线之间形成的电容器等等。

一只豌豆象的博客 1782

HMC7044调试指南与FPGA开发

最后,我们介绍了在FPGA开发中使用HMC7044的几个常见应用场景,包括时钟分配、时钟同步、高精度时钟生成和时钟域交叉。根据您的应用需求,您可以选择不同的时钟分配方案,例如使用PLL生成特定频率的时钟信号,或者通过分频器生成较低频率的时钟信号。HMC7044可以提供精确的时钟同步功能,确保各个FPGA板之间的时钟信号保持一致,从而实现可靠的数据传输和协同操作。HMC7044可以实现时钟域之间的交叉,通过生成和分配不同频率的时钟信号,使得不同时钟域的模块能够协同工作。FPGA开发中的HMC7044应用。

CqpFsharp的博客 3619

POJ3250 牛的视野(单调栈)

题意:一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛和后面的其他牛的发型。 给出这些牛的高度,要求每头牛可以看到的牛的数量的和。 思路:计算每头牛可以看到牛的头数,可以等效于每头牛可以被看到的次数 从左到右依次读取当前牛的高度,从栈顶开始把高度小于或等于当前牛的高度的那些元素删除,此时栈中剩下的元素的数

深海沧澜的博客 1482

Parasoft C++Test软件单元测试_操作指南

本文主要为使用C++TEST进行单元测试的流程性操作讲解,后续文章将以专题形式进行详细讲解,以及用一些被测函数作为示例进行实例讲解。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1576

POJ 3250 单调栈

点击打开链接题意:给出一队牛的高度 , 牛所面对的方向相同, 当前牛只能看见前面比他矮的牛的头 , 如遇见比他高的中断(详见样例) 问所有牛所能见到的牛的头的总数量思路:单调栈维护一个有序序列,从左到右依次把小于当前牛的高度的牛出栈,栈里所剩下的就是能看见当前牛的牛的数量。#include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;sta...

qq_41231363的博客 371

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ 3250 Bad Hair Day(单调栈)

题目地址:POJ 3250 初学单调栈。多校和网络赛已经碰到两次了。 单调栈的原理简单的不能再简单了。。就是让栈里的元素从栈顶到栈底呈单调性。 比如说递增单调栈。 每次放进一个数的时候,如果栈顶的数小于要放的数,就把栈顶的数pop出来使得栈里保持单调性。 对于这道题来说,就从右往左开始遍历,建一个递增单调栈。那么每次pop出来的就是当前的牛可以看到的牛数。然后累加即可。 代码如下:

scf0920 1144

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ 3250 Bad Hair Day 详解——单调栈

3250 -- Bad Hair Day (poj.org)http://poj.org/problem?id=3250题意:一群牛排成一排,牛a 向右看能比他身高小的牛,直到一头身高比 牛a 高的牛挡住 牛a的视野,求 牛0 到 牛n-1 中 每头牛能看到其他牛的总数。 思路:单调栈; 将这个栈维护成从栈底至栈顶严格单调递减; 下面由样例举例; 一共有6头牛; 这六头牛的身高从左到右分别为: 10、3、7、4、12、2; 序号 0 1 2 3 4 5 身

zy98zy998的博客 375

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

POJ3250 Bad Hair Day 单调栈

POJ3250 Bad Hair Day 单调栈

silence__bug的博客 649

POJ 3250 Bad Hair Day——————单调栈

POJ 3250 Bad Hair Day Farmer John的奶牛在风中凌乱了它们的发型…… 每只奶牛都有一个身高hi(1≤hi≤1,000,000,000)hi(1 ≤ hi ≤ 1,000,000,000)hi(1≤hi≤1,000,000,000),现在在这里有一排全部面向右方的奶牛,一共有NNN只(1≤N≤80,000)(1 ≤ N ≤ 80,000)(1≤N≤80,000)。对于奶...

鸿杰 的博客 332

POJ 3250 单调栈

题意 传送门 POJ 2350 题解 非严格单调栈 若考虑每一头牛可以看到的数量,则需要求解满足 h[j]>=h[i]h[j]>=h[i]h[j]>=h[i] 的最大的 jjj,逆向遍历,非严格单调栈求解。 #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> using namespace std; #define inf 0x3f3f3f3f

neweryyy的博客 196

poj 3044 和 3250 栈的使用

poj 3044: 3044(贪心,单调栈) 与3250一起做。 这道题主要是题意难懂,看详细的分析。 题意:以坐标的形式给出一张图,表示一些楼房的正视图,求出楼房的最少个数。 题意理解: (1)给出的坐标是高度发生变化时的楼高坐标,上面的例图中,一个宽度为27的楼面正视图其实用10个发生高度变化时的坐标就能决定,如下: x=1时,楼高y=1;x=2-4,y=2;x=5时,y=1;x=6-7时,y...

alex_yuqian的博客 351

Bad Hair Day//POJ - 3250//单调栈

Bad Hair Day//POJ - 3250//单调栈 题目 Some of Farmer John’s N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of o...

salty_fishman的博客 196

poj 3250 Bad Hair Day(单调栈)

http://poj.org/problem?id=3250 Bad Hair Day Description Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle,

大太阳 698

Poj 3250 Bad Hair Day 【单调栈】

题目链接:Poj 3250 Bad Hair DayBad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16700 Accepted: 5621 DescriptionSome of Farmer John’s N cows (1 ≤ N ≤ 80,000) are having

世界很大 584

POJ3250-Bad Hair Day

POJ3250-Bad Hair Day 题目描述 Description Some of Farmer John’s N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of other cows that can see the top of other cows’ heads.

屋檐听雨丶 207

poj3250Bad Hair Day【单调栈】

Language: Default Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16176   Accepted: 5481 Description Some of Farmer John's N cows (1 ≤ N ≤ 8

走一步再走一步 602
上一篇: poj 1941 递归输出图形(Sierpinski Fractal)
下一篇: poj 2121 字符串(英文数字->阿拉伯数字)
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值