CodeForces Round #305 (div1) B. Mike and Feet (单调栈)
2016-05-12 20:57
344 查看
题目
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:B - Mike and Feet
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit
Status
Description
Mike is the president of country What-The-Fatherland. There are n bears living in this country besides Mike. All of them are standing in a line and they are numbered from 1 to n from left to right. i-th bear is exactly ai feet high.
A group of bears is a non-empty contiguous segment of the line. The size of a group is the number of bears in that group. The strength of a group is the minimum height of the bear in that group.
Mike is a curious to know for each x such that 1 ≤ x ≤ n the maximum strength among all groups of size x.
Input
The first line of input contains integer n (1 ≤ n ≤ 2 × 105), the number of bears.
The second line contains n integers separated by space, a1, a2, …, an (1 ≤ ai ≤ 109), heights of bears.
Output
Print n integers in one line. For each x from 1 to n, print the maximum strength among all groups of size x.
Sample Input
Input
10
1 2 3 4 5 4 3 2 1 6
Output
6 4 4 3 3 2 2 1 1 1
看了一个题解才明白:下面链接
这里写链接内容
一开始从头推暴力写法,利用线段书的思想一层层更新取最大值,果断超时了,后来从答案出发想解题
#include<cstdio> #include<iostream> #define INT_MAX 2147483647 using namespace std; int n; int a[200005]; int l[200005],r[200005]; int ans[200005]; int main(){ cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); a[0]=a[n+1]-INT_MAX; for(int i=1;i<=n;i++){ int j=i-1; while(a[j]>=a[i])j=l[j];//跳跃更新//j--; l[i]=j; } for(int i=n;i>0;i--){ int j=i+1; while(a[j]>=a[i])j=r[j]; r[i]=j; } for(int i=1;i<=n;i++){ int d=r[i]-l[i]-1; if(a[i]>ans[d])ans[d]=a[i]; } for(int i=n;i>1;i--){ if(ans[i]>ans[i-1])ans[i-1]=ans[i]; } for(int i=1;i<=n;i++){ printf("%d ",ans[i]); } return 0; }
恩,后续补一波单调栈,希望自己能记得
相关文章推荐
- 利用Runtime实现对Json数据的ORM框架
- javascript第七天
- 移动前端知识总结
- CAFFE学习笔记(三)在VS2013下生成需要的exe文件
- jquery中$.ajax的$.get与$.post使用
- ubuntu14.04+GPU+caffe
- angular.js之路由实现
- Leetcode 237. Delete Node in a Linked List
- HTML的DOM对象的nodeName
- 【Qt】自定义样式之QSS
- jquery之音乐均衡器
- Javascript复习第三天动态显示时间
- jQuery编程的最佳实践
- 常用公共的css的样式
- 剑指Offer—字符串排列
- The Lifecycle and Cascade of WeChat Social Messaging Groups-www2016-20160512
- JavaScript-父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序
- Caffe + Ubuntu 14.04 + CUDA 7.0 新手安装配置指南
- angJs使选中的li背景颜色不同
- Js中关于转义符的使用和单双引号的区别