Codeforces Round #305 Mike and Feet(单调栈)
来源:互联网 发布:网络制式英文 编辑:程序博客网 时间:2024/05/14 04:03
题意:给一个长度为n的数列,询问在长度为1~n的区间中的最小值是多少。
思路:用单调栈处理出每个数作为最小值的最大区间块,用数组l和r记录,比如数列5 3 4 1 2,对于数字3,就是l[2] = 0, r[2]= 2,对于两边分别补-1和n。然后用g[i]表示区间长度为i时的符合要求的最大值,最后因为数值随区间长度增加递减,所以从n-1到0将答案更新。
AC代码:
#include <cstdio>#include <cstring>#include <stack>#include <algorithm>using namespace std;int l[200020], r[200020], a[200020], g[200020], ans[200020];stack<int>stk;main() { int n; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } l[0] = -1; stk.push(0); for(int i = 1; i < n; i++) { while(!stk.empty()&& a[i] <= a[stk.top()]){ stk.pop(); } if(stk.empty()) l[i] = -1; else l[i] = stk.top(); stk.push(i); } while(!stk.empty()) stk.pop(); stk.push(n - 1); r[n - 1] = n; for(int i = n - 2; i >= 0; i--) { while(!stk.empty() && a[i] <= a[stk.top()]){ stk.pop(); } if(stk.empty()) r[i] = n; else r[i] = stk.top(); stk.push(i); } for(int i = 0; i < n; i++) g[r[i] - l[i] - 2] = max(g[r[i] - l[i] - 2], a[i]); for(int i = n - 1; i >= 0; i--) ans[i] = max(ans[i + 1], g[i]); for(int i = 0; i < n; i++) printf("%d ", ans[i]); putchar('\n');}
0 0
- Codeforces Round #305 Mike and Feet(单调栈)
- Codeforces Round #305 (Div. 1) B. Mike and Feet(单调栈)
- CodeForces Round #305 (div1) B. Mike and Feet (单调栈)
- Codeforces Round #305 (Div. 1) B. Mike and Feet(单调栈)
- Codeforces Round #305 (Div. 2)D---Mike and Feet(单调栈)
- 单调栈经典模板(Codeforces Round #305 (Div. 2), problem: (D) Mike and Feet)
- Codeforces Round #305 (Div. 2) 548D Mike and Feet(单调栈)
- Codeforces Round #305 (Div. 1)-B. Mike and Feet(单调栈)
- Codeforces Round #305 (Div. 2) D. Mike and Feet (单调栈)
- codeforces #305 547B B. Mike and Feet(单调栈)
- Codeforces #548D Mike and Feet(单调栈)
- CodeForces - 548D Mike and Feet(单调栈)
- Codeforces 547B Mike and Feet(单调栈)
- CodeForces 548D Mike and Feet (单调栈)
- CodeForces 547B - Mike and Feet(单调栈)
- Mike and Feet(单调栈)
- Codeforces 547 B - Mike and Feet (单调栈)
- Codeforces 547B - Mike and Feet (单调栈)
- 局部变量与函数返回地址(大学课件整理)
- PHP设计模式之:单例模式
- VS2013中右键添加菜单
- (大数据之hive)hive利用mysql存储metastore
- Install: Django
- Codeforces Round #305 Mike and Feet(单调栈)
- 事务
- 一个storm的完整例子——WordCount
- 动态代理在JDBC的DataSource中的应用
- 2015编程之美 彩色的树
- iOS编程——面向对象的编程
- (大数据之hive)hive联表查询、创建外部表练习
- Install: Cheetah
- std名字空间(大学课件整理)