首页 > 其他分享 >[lnsyoj102/luoguP2866]Bad Hair Day

[lnsyoj102/luoguP2866]Bad Hair Day

时间:2024-07-20 09:56:18浏览次数:13  
标签:int top 元素 stk Hair Bad include luoguP2866 单调

题意

给定序列 \(a\),记 \(C_i\) 为 \(a_i\) 右侧第一个 \(\ge a_i\) 的元素与 \(a_i\) 间的元素个数,求\(\sum_{i=1}^n C_i\)

sol

单调栈可以在 \(O(n)\) 的时间复杂度内解决求某个元素左(右)第一个大于(小于)的元素。
以本题为例,由于本题需要求侧第一个 \(\ge a_i\) 的元素,因此需要维护一个严格单调递减栈。从 \(n\) 到 \(1\) 枚举,当枚举到 \(a_i\) 时,将栈顶的所有 \(\le a_i\) 的元素都弹出栈,这样就可以保证栈内的元素永远严格单调递减。同时,因为所有 \(\le a_i\) 的元素都已出栈,因此当前的栈顶元素就是满足上述题意的元素
注意:由于需要利用下标求 \(C_i\),因此栈内应存元素的下标而非元素的值

代码

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 80005;

int a[N];
int n;
int stk[N], top;

int main(){
	scanf("%d", &n);
	for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);
	long long res = 0;
	stk[0] = n + 1;
	for (int i = n; i >= 1; i -- ){
		while (top && a[stk[top]] < a[i]) top -- ;
		res += stk[top] - i - 1;
		stk[ ++ top] = i;
	}
	
	printf("%lld\n", res);
	
	return 0;
}

标签:int,top,元素,stk,Hair,Bad,include,luoguP2866,单调
From: https://www.cnblogs.com/XiaoJuRuoUP/p/-/lnsyoj102_luoguP2866

相关文章

  • PHP curl 模拟GET请求接口报错HTTP Status 400 – Bad Request 问题
    网上查的解决方案:https://blog.csdn.net/sunsijia21983/article/details/123204143问题:PHP用curl模拟GET请求接口报错HTTPStatus400–BadRequesthttp://xxx/api/getZList?page=1&limit=20&zName=测试参数zName是英文、数字的时候都不会报错,输入汉字就报错400;解决方案:h......
  • datagrip启动报错Exception Type:EXC_BAD_ACCESS (SIGABRT)
    本人电脑背景:mac10.15安装datagrip2024版本,根据官方描述,这个版本是不支持的,但是本着试试的态度安装,毕竟也想用新版本。结果遇到了问题。启动打不开,由于错误信息较多,大概整理出来描述如下:ExceptionType:EXC_BAD_ACCESS(SIGABRT)ExceptionCodes:KERN_INVALID_......
  • Linux fileformat error: bad interpreter: No such file or directory
    背景在windows下新建的sh文件,copy到linux下有的会报错,一般是格式问题默认情况下windows格式会在段落末尾有CR、LF,但是Unix格式只有LF示例执行sh脚本文件./file.sh-bash:./file.sh:/bin/sh^M:坏的解释器:没有那个文件或目录或者报badinterpreter:Nosuchfileordire......
  • [BSidesCF 2020]Had a bad day
    先查看了源码又抓包查看信息没发现有用信息看到url为index.php?category=woofers首先就怀疑是文件包含漏洞伪协议包含?category=php://filter/convert.base64-encode/resource=index了解到必须要含有woofer,smeowers,index其中之一就可以直接用伪协议做了?category=php......
  • 算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」今日216/10000抱个拳,送个礼神经网络设计与选择参数初始化与优化学习率调整与正则化数据预处理与标准化训练过程与监控特定模型技巧其他训练技巧1.神经网络设计......
  • 【攻防世界】BadProgrammer
    BadProgrammer题目来源攻防世界NO.GFSJ0986题目描述打开网址页面如下,没有什么有用信息用dirsearch扫一下目录,发现/static../(用御剑扫不出来)其实这是一个Nginx配置错误的目录遍历漏洞,用AWVS也可以扫出来题解访问/static../查看app.js,返回以下代码constexpress=......
  • BADEDIT: BACKDOORING LARGE LANGUAGE MODELS BY MODEL EDITING
    本文是LLM系列文章,针对《BADEDIT:BACKDOORINGLARGELANGUAGEMODELSBYMODELEDITING》的翻译。BADEDIT:通过模型编辑后门攻击大型语言模型摘要1引言2背景和相关工作3后门攻击的轻量级编辑4BADEDIT5实验6结论摘要主流后门攻击方法通常需要大量的中......
  • Flutter——最详细(Badge)使用教程
    背景主要常用于组件叠加上圆点提示;使用场景,消息数量提示,消息红点提示属性作用backgroundColor红点背景色smallSize设置红点大小isLabelVisible是否显示offset设置红点位置alignment设置红点位置child设置底部组件代码块classBadgePageextendsStatelessWidget{......
  • 制作badusb上线CS
    ‍前言在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员KarstenNohl展示了他们称为“BadUSB”的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态现在的USB设备很多,比如语音视频设备、摄像头等,因......
  • python调用智能合约代码,BadFunctionCallOutput 怎么解决
    目录桌面应用使用QT5开发的,可以看看我的QT5文章BadFunctionCallOutput 怎么解决我的原因是智能合约地址填写错误python智能合约基础应用如何使用remix编写solidity智能合约并部署上链在哪进行合约部署,合约部署步骤Remix怎么复制abi和address​编辑这个ABI对应最简......