首页 > 其他分享 >[USACO06NOV]Bad Hair Day S(栈)

[USACO06NOV]Bad Hair Day S(栈)

时间:2023-05-27 14:57:38浏览次数:33  
标签:头牛 int Hair Bad num ans USACO06NOV 身高 cout

题目大意:

按顺序给出n头牛的身高,每头牛可以看见它到后出现的牛中第一头身高高过(大于等于)它的牛之间的所有牛,求所有牛总共能看到的牛数

解题思路:

从后往前遍历查看每头牛能看到的牛数,每次进行的比较数量的太多,但我们可以用栈来存储关键信息以减少不必要的比较

代码如下:

#include <bits/stdc++.h>
#include<algorithm>
using namespace std;
#define ll long long
#define N 80005
int a[N];
//每头牛的身高和所能看到的别的牛的头发的数量
struct P {
    int x, num=0;
    P(int x, int num) :x(x), num(num){}
};
stack<P>ans;
ll sum = 0;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,w; cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i]; 
	}
    for (int i = n; i; i--) {
        int num = 0;
        while (!ans.empty() && a[i] > ans.top().x) {
            num += ans.top().num+1;
            //去掉冗杂元素
            ans.pop();
        }
        sum += num;
        //存入该头牛的信息
        ans.push(P(a[i],num));
    }
    cout << sum;
}

标签:头牛,int,Hair,Bad,num,ans,USACO06NOV,身高,cout
From: https://www.cnblogs.com/markun0/p/17436714.html

相关文章

  • CodeForces 1105B Zuhair and Strings(思维 + 枚举)
    传送门题目大意就是给你一个字符串,还有一个等级K,K的具体含义就是连续的相同的字符串的个数,题目就是要求长度为k的,字符一样的子串有几个,如果k==2就是比如aa,bb,cc,dd,..... 这样的,注意不能重叠。因为题目给的数据范围在2e5,所以枚举从a到z,然后取最大值就好了。代码如下#incl......
  • git commit错误 error: bad signature 0x00000000 fatal: index file corrupt
    gitcommit错误error:badsignature0x00000000fatal:indexfilecorrupt 这个错误信息表明您的git仓库中的索引文件已损坏。修复此问题的一种方法是删除索引文件并重置它。您可以在仓库的根目录中运行以下命令:rm-f.git/indexgitreset这将删除索引文件并将其还原......
  • 【题解】Luogu[P1879] [USACO06NOV]Corn Fields G
    Link→状压dp典题,看数据范围就能多半猜到是状压。\(M\)行\(N\)列很不舒服,本篇题解规定为\(N\)行\(M\)列。因为说没有哪两块草地相连,我们不妨一行一行考虑,一行中每格只可能是\(0\)或\(1\),所以一行的总不同状态数是\(2^M\)。我们用二进制表示每一行的状态,对于每一行,暴......
  • mac M2 mule esb 3.9 Bad CPU type in executable
    启动直接报错linux由于是amd64linux版本不支持cpu指令集找到合适的theJavaServiceWrapper做转换https://wrapper.tanukisoftware.com/doc/english/download.jsp#stable下载解压warapper.jar移动并改名lib/bootwarapper移动并改名lib/boot/exec改名......
  • 通过IIS设置来解决System.BadImageFormatException错误
    工作时换了新电脑,然后运行发布后MVC程序就报错:    直接运行Code是OK。错误的原因肯定是64位系统调用了32bit的dll。尝试修改project的Targe为x86,还是无法解决问题。最后查看资料,将应用程序池修改为启用32bit就可以了。 ......
  • 502 Bad Gateway Nginx
    502BadGatewayNginx页面提示502BadGatewayNginx简单来说,可以检查nginx的配置文件,查看其中的各个ip是否有效,端口是否通着像是我的情况是,数据库密码换了以后,多个应用的配置文件换了,但是漏了一个,然而用户反映是在五一放假结束以后才出现问题,实际上应该是因为数据库连接不上......
  • Android为应用添加角标(Badge)
    1.需求简介角标是什么意思呢?看下图即可明了:可以看到图中的乐购这个app右上角的红色的圆圈,里面有10这个数字的,就是一种角标。角标,英语是badge,也就是“徽章,像章,奖章;象征,标记”的意思。一般来说,应用的角标是用来标记有多少条提醒(Notification)没读(unread),一旦......
  • gzip 解压文件报错 gzip.BadGzipFile: Not a gzipped file (b'\n')
          因为获取的是Unicode码,需要decode才会正常解决办法:按行获取然后......
  • BadBarcode 条形码漏洞
    BadBarcodeVulnerabilityBadBarcodeisadesignflawwidelyexistsin barcode reading devices,whichcouldbeexploitedtohackintohostcomputersthatconnecttoabarcodescanner.CurrentlyalmostallthebarcodescannersaredesignedtoworkinKeyb......
  • ViewBadger为其他View添加角标
    项目地址:https://github.com/jgilfelt/android-viewbadger以前都是自己写的,一不小心网上找到这个,觉得不错,以后直接copy了,方便快捷!packagecom.readystatesoftware.viewbadger;importandroid.content.Context;importandroid.content.res.Resources;imp......