奇妙的数列
来源:互联网 发布:微信小程序 题库源码 编辑:程序博客网 时间:2024/04/27 18:11
题意
给出数列
数列
分析
题目就是让我们找到最长的一段区间,使得区间左端点为区间最小值,区间右端点为区间最大值。
我们可以维护每个位置的最小值位置,那么当我们做到当前位置,将栈顶小于它的元素弹出栈时,我们可以用该元素的最小值更新一下当前位置的最小值。这样做显然是正确的。那我们就能用
代码
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int N = 1e7 + 10;int b[N], st[N], f[N];int n, top, tot;int read(){ char ch; int re = 0; for (ch = getchar(); ch > '9' || ch < '0'; ch = getchar()); for (; ch <= '9' && ch >= '0'; re = re * 10 + ch - 48, ch = getchar()); return re;}void init(){ n = read(); for (int i = 1; i <= n; ++ i) b[i] = read();}void solve(){ top = 0; int ans = 0; for (int i = 1; i <= n; ++ i) { f[i] = i; while (top && b[st[top]] <= b[i]) { if (b[f[st[top]]] <= b[f[i]]) f[i] = f[st[top]]; -- top; } st[++ top] = i; ans = max(ans, i - f[i] + 1); } printf("%d", ans);}int main(){ init(); solve();}
0 0
- 奇妙的心电图数列
- 奇妙的数列
- 奇妙的数列
- 【GDOI模拟】奇妙的数列
- 【GDOI2016模拟3.9】奇妙的数列
- 奇妙的裴波那契数列和黄金分割
- [bzoj2813]奇妙的Fibonacci数列 (数论+线性筛)
- BZOJ2813--奇妙的斐波那契【线性筛】【斐波那契数列】
- 奇妙数列(函数模块化设计)
- 奇妙的图片
- 行为学奇妙的联觉
- 奇妙的网络世界
- 奇妙的堆栈
- auto_ptr_ref的奇妙
- 奇妙的Base64编码
- 奇妙的“秒”世界
- 奇妙的7
- 奇妙的图片
- 维护IOS项目时遇到的一些问题
- JAVA调用条码打印机打印二维码
- spring aop
- 继承类中利用派生类访问基类保护成员
- hadoop 完全分布式 下 datanode无法启动解决办法
- 奇妙的数列
- Static关键字的使用
- srand和rand的用法
- 改进的SMO算法
- WebView
- APDU命令整理
- ESP8266 SDK 编程入门 02-开发工具篇
- 集合框架
- Java生成MyEclipse8.6+序列号代码