当前位置: 首页 > news >正文

51nod-1437 迈克步(单调栈)

原题链接

1437 迈克步
题目来源:  CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 80  难度:5级算法题
 收藏
 关注

有n只熊。他们站成一排队伍,从左到右依次1到n编号。第i只熊的高度是ai。

一组熊指的队伍中连续的一个子段。组的大小就是熊的数目。而组的力量就是这一组熊中最小的高度。

迈克想知道对于所有的组大小为x(1 ≤ x ≤ n)的,最大力量是多少。


Input
单组测试数据。
第一行有一个整数n (1 ≤ n ≤ 2×10^5),表示熊的数目。
第二行包含n个整数以空格分开,a1, a2, ..., an (1 ≤ ai ≤ 10^9),表示熊的高度。
Output
在一行中输出n个整数,对于x从1到n,输出组大小为x的最大力量。
Input示例
10
1 2 3 4 5 4 3 2 1 6
Output示例
6 4 4 3 3 2 2 1 1 1

遍历每个元素num[i]求出以这个元素为最小值的最大区间,长度d, 更新ans[d] = max(ans[d], num[i]), 最从尾到头更新ans[i], ans[i] = max(ans[i], ans[i+1])

#include <bits/stdc++.h>
#define maxn 200005
#define MOD 1000000007
using namespace std;
typedef long long ll;int Stack1[maxn], Stack2[maxn], num[maxn], ans[maxn], len[maxn];
int get_int(){int m = 0;char ch = getchar();while(ch >= '0' && ch <= '9'){m = m * 10 + ch - '0';ch = getchar();}return m;
}
int main(){//	freopen("in.txt", "r", stdin);int n;scanf("%d", &n);getchar();for(int i = 0; i < n; i++){num[i] = get_int();}Stack1[0] = 0;len[0] = 0;int j = 1;for(int i = 1; i < n; i++){while(j && num[Stack1[j-1]] >= num[i]){j--;}if(j == 0)len[i] = 0;elselen[i] = Stack1[j-1] + 1;Stack1[j++] = i;} j = 1;Stack2[0] = n - 1;len[n-1] = n - 1 - len[n-1] + 1;for(int i = n - 2; i >= 0; i--){while(j && num[Stack2[j-1]] >= num[i]){j--;}if(j == 0)len[i] = n - 1 - len[i] + 1;elselen[i] = Stack2[j-1] - len[i];int d = len[i];ans[d] = max(ans[d], num[i]);Stack2[j++] = i;}ans[len[n-1]] = max(ans[len[n-1]], num[n-1]);for(int i = n - 1; i >= 1; i--){if(ans[i] < ans[i+1])ans[i] = ans[i+1];}printf("%d", ans[1]);for(int i = 2; i <= n; i++)printf(" %d", ans[i]);puts("");return 0;
}


http://www.xdnf.cn/news/853795.html

相关文章:

  • IT运维工具推荐
  • 爱是一种遇见
  • windows XP中的IE6.0修复方法
  • 【转帖】源的添加管理和Cydia使用教程
  • windows下Npoint虚拟主机安装配置及心得
  • 万能DOS启动盘制作全攻略!(软盘+光盘+U盘+硬盘+NTFS+应急实用工具)
  • 如果找活跃IP段!抓肉鸡必须的!
  • 超级玛丽全通关图文攻略
  • MATLAB数字图像处理详细总结
  • 为什么数组下标越界要检查
  • vbs整人代码大集合 多年的代码收集
  • ubuntu实用工具
  • 赛效:在线查询QQ号价格评估的方法是什么
  • JAVA 基于J2ME的手机游戏设计与开发(论文+源码)_Nueve
  • 网线制作,集线器、交换机、路由器的介绍以及路由器的设置
  • C/C++经典题解析
  • iOS 7.0 presentViewController 背景变黑的解决办法
  • 开心网外挂开发手记
  • Rockchip | 使用SD卡启动或升级固件到本地存储
  • 世界顶级五大女程序媛,不仅技术强还都是美女
  • Windows的EXE文件(1)
  • 卡巴斯基KAV/KIS 6.0/7.0 永久免费激活方法
  • 怎么做英文外链代发
  • ThinkPad T41/43 -- 安装Windows XP及其驱动程序
  • Visual SourceSafe 6.0 安装配置简要说明(转)
  • 低格格式化过程及与高级格式化的区别
  • Joomla安装图文教程 (送 Joomla 中文语言包)
  • 3.4 DLL注入:全局消息钩子注入
  • CSS3 经典教程系列:CSS3 圆角(border-radius)详解
  • 网卡参数设置建议与各个网卡参数含义详解