题目描述

给你一个1->n的排列和一个栈,入栈顺序给定
你要在不打乱入栈顺序的情况下,对数组进行从大到小排序
当无法完全排序时,请输出字典序最大的出栈序列

输入描述:

第一行一个数n
第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格

输出描述:

输出一行n个数表示答案,用空格隔开,结尾无空格

示例1

输入

5
2 1 5 3 4

输出

5 4 3 1 2

说明

2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈

备注:

对于100%的数据,有1<=n<=1000000,保证给的是一个排列

题意: 略

分析: 我们可以模拟下找到规律,因为输出字典序最大的,第一个输出的肯定是最大的元素,当考虑第i个元素时,如果当前元素是 [a[i],n] [a[i],n],中最大的元素,那么就输出,否则就入栈,如果输出后,考虑栈顶元素,同上,扫一遍之后如果栈中还有元素,那么就直接输出即可

参考代码

#include<bits/stdc++.h>using namespace std;stack<int> s;
vector<int> res;
int a[N],pre[N];int main(){ios_base::sync_with_stdio(0);int t = -1;int n;cin>>n;for(int i = 0;i < n;i++) cin>>a[i];for(int i = n-1;i >= 0;i--) {t = max(t,a[i]);pre[i] = t;}for(int i = 0;i < n;i++) {if(a[i] == pre[i]) {res.push_back(a[i]);while (!s.empty() && s.top() > pre[i+1]) {res.push_back(s.top());s.pop();}} else {s.push(a[i]);}}while (!s.empty()) {res.push_back(s.top());s.pop();}for(int i = 0;i < res.size();i++) {printf("%d%c",res[i],i == res.size() - 1 ? '\n' : ' ');}return 0;
}
  • 如有错误或遗漏,请私聊下UP,thx

牛客练习赛10 B栈和排序【思维】相关推荐

  1. 牛客练习赛10 F-序列查询(莫队+链表)

    F-序列查询 v5zsq题解 假设数字xxx在区间[l,r]种出现y次,那么包含x的子区间个数为2r−l+1−y⋅(2y−1)2^{r-l+1-y}·(2^y-1)2r−l+1−y⋅(2y−1),因此 ...

  2. 牛客练习赛41 D.最小相似度(思维+bfs)

    传送门 给定nnn个长mmm位的二进制串 求一个二进制串TTT,定义valival_ivali​是TTT与第iii个二进制串相同的位数 使得max(val1,val2....valn)max(val_ ...

  3. 牛客练习赛73 D 离别(线段树+右端点排序离线查询)

    牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...

  4. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  5. 2021牛客练习赛90

    2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...

  6. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  7. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  8. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  9. 牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

    牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作,最后得到的答案会是最大的,那我们可以将它放进一个最小堆中来维护,但是里面的数是需要取模的,当它取模的时候,将会变小.那 ...

最新文章

  1. Fragment提交transaction导致state loss异常
  2. C#调用JAVA接口WSSE方式用WebClient方式
  3. 全球与中国植物基液压油市场供需预测及未来发展展望报告2022-2028年版
  4. docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
  5. dart系列之:dart中的异步编程
  6. AD 脚本kixtart运用之五(用户电脑屏保设置)
  7. 真实经历:整整一年了,他是这样从程序员转型做产品经理的
  8. P4151 [WC2011]最大XOR和路径(线性基应用)
  9. 在Hadoop上运行基于RMM中文分词算法的MapReduce程序
  10. 《App后台开发运维与架构实践》第2章 App后台基础技术
  11. PHP下载CSS文件中的图片
  12. ios获取新数据要不要关_100%安卓APP都在获取用户隐私,网络隐私进入深入区
  13. js系列教程2-对象、对象属性全解
  14. Sengled Snap带摄像头的智能灯泡
  15. C# json解析字符串总是多出双引号_SSM框架中JSON数据交互实现页面显示图书种类...
  16. 基于opencv库把图像灰度化,二值化
  17. 大数据处理平台简介和总结
  18. A053_项目部署_Linux介绍_CentOS
  19. asp .net 和 ASP
  20. 三星推出体积更小的1亿像素图像传感器产品线;66%中企没看到数字化投资促进收入增长 | 美通企业日报...

热门文章

  1. OpenCv--提取水平和垂直线(通过膨胀和腐蚀操作)
  2. python画水平线和垂直线横线 纵线
  3. 主从模式的数据库搭建(主从复制)
  4. python官方文档学习_Python3.5.2官方文档学习备忘录
  5. css动画结束闪烁,每个无限CSS3动画结束时的毛刺/闪烁/眨眼
  6. 01: 网络参考模型 、 数据封装与传输 、 数制与数制转换 、 IP地址与子网掩码
  7. win10 远程桌面和向日葵远控哪个好用
  8. 施乐3030工程机驱动安装
  9. 基于VB的Picture绘图
  10. 20200107笔记