ybtoj 贪心C. 4.出栈序列

Posted SSL_ZZL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ybtoj 贪心C. 4.出栈序列相关的知识,希望对你有一定的参考价值。

C. 4.出栈序列

ybtoj 贪心 C. 4.出栈序列


题面



解题思路

主要思想:最大化字典序的话,如果后面有数比当前数大,那么弹出当前数明显不优

先预处理后缀最大值
如果后面的数大于当前栈顶,先不弹出
如果当前栈顶是后缀中最大的,弹出


Code

#include <bits/stdc++.h>
#define N 1001000

using namespace std;

int n, maxn, t, a[N], fol[N], q[N];

int main() 
	scanf("%d", &n);
	for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
	for(int i = n; i; i --) 
		maxn = max(maxn, a[i]), fol[i] = maxn;
	for(int i = 1; i <= n; i ++) 
		q[++ t] = a[i];
		while(q[t] > fol[i + 1])
			printf("%d ", q[t --]);
	
	while(t)
		printf("%d ", q[t --]);
 

以上是关于ybtoj 贪心C. 4.出栈序列的主要内容,如果未能解决你的问题,请参考以下文章

CF821 C. Okabe and Boxes 栈模拟

ybtoj 贪心 A. 2.最大积分

ybtoj 11.13 S组贪心B. 字典之序

ybtoj 贪心B. 3.砍树问题

ybtoj「基础算法」第1章 递推算法强化训练贪心A. 1.划分数列

判断出栈序列是否可能是某个入栈序列的出栈序列,C++