CF817D【Imbalanced Array】

Imbalanced Array

题目

CF817D


解析

学单调栈时偶然看到了这一题,就写掉了
想一下暴力,O(n3),n<=106,神威太湖之光都跑不过去
加个ST表,O(n2),天河二号跑得过去,你谷评测姬就别想了
考虑每个点对结果贡献,得到是左右拓展,最优是O(n),随便构造一个数据就退化为O(n2)了
加上单调栈优化,然后就做到了了传说中的O(n)!
稳稳过掉
附:居然放过去了一位O(nlogn)的,希望早日把n开到107
第一篇题解是同机房的dalao写的,但说错了一点:longlong不会炸,害的我去翻int128

code:

#include<cstdio>
#define int long long
#define rr register int
using namespace std;
inline bool idigit(char x){
   return (x<'0'|x>'9')?0:1;}
inline int read()
{
   
	int num=0,f=1;
	char c=0;
	while(!idigit(c=getchar())){
   if(c=='-')f=-1;}
	while(idigit(c))num=(num<<1)+(num<<3)+(c&15),c=getchar();
	return num
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值