机房练习赛kun (贪心 模拟)
来源:互联网 发布:网络金融的认识 编辑:程序博客网 时间:2024/04/29 06:54
机房练习赛kun (贪心 模拟)
【问题描述】
栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序。例如,借助一个栈,依次将数组 1,3,2 按顺序入栈或出栈,可对其从大到小排序:
1 入栈;3 入栈;3 出栈;2 入栈;2 出栈;1 出栈。
在上面这个例子中,出栈序列是 3,2,1,因此实现了对数组的排序。
遗憾的是,有些时候,仅仅借助一个栈,不能实现对数组的完全排序。例如给定数组 2,1,3,借助一个栈,能获得的字典序最大的出栈序列是 3,1,2:
2 入栈;1 入栈;3 入栈;3 出栈;1 出栈;2 出栈。
请你借助一个栈,对一个给定的数组按照出栈顺序进行从大到小排序。当无法完全排序时,请输出字典序最大的出栈序列。
【输入格式】
输入共2行。
第一行包含整数n,表示入栈序列长度。
第二行包含n个整数, 表示入栈序列。 输入数据保证给定的序列是1到 n 的全排列,即不会出现重复数字。
【输出格式】
仅一行,共n个整数,表示你计算出的出栈序列。
【样例输入】
3
2 1 3
【样例输出】
3 1 2
【样例解释】
这回山里有座塔。
【数据规模与约定】
30%的数据,1 ≤ n ≤ 10^3 。
60%的数据,1 ≤ n ≤ 10^5 。
对于100%的数据,1 ≤ n ≤ 10^6 。
思路:
贪心思路:如果当前的栈为空或者栈顶元素小于还没进栈元素的最大值时,应该使元素进栈,直到最大值进栈;否则,栈顶元素出栈。
#include <iostream>#include <cstdio>#include <stack>using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 1000005;bool used[maxn];int n,a[maxn];stack <int> state;int main() { freopen("kun.in","r",stdin); freopen("kun.out","w",stdout); scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &a[i]); int lim = n, pos = 1; while( 1 ) { while( used[lim] ) lim--; if( !lim ) { while(!state.empty()){ printf("%d ", state.top()); state.pop(); } break; } if(state.empty() || lim > state.top()) { while(a[pos]^lim){ state.push(a[pos]); used[a[pos]] = true; pos++; } used[lim] = true; pos++; printf("%d ", lim); } else while(!state.empty() && state.top() > lim){ printf("%d ",state.top()); state.pop(); } } return 0;}
阅读全文
0 0
- 机房练习赛kun (贪心 模拟)
- 【贪心】NOIP模拟题“Kun”
- 选机房(贪心模拟)
- NOIP模拟题 kun 栈 贪心 解题报告
- 2017.7.3 机房测试(模拟,贪心,图论)
- 2017.7.7 机房测试 (模拟,贪心,二分)
- 机房练习赛nan(分块压缩)
- NOIP 模拟题 【hao】【kun】【nan】
- [机房练习赛4.3]drive
- [机房练习赛4.3]graph
- [机房练习赛4.3]airplane
- [机房练习赛4.4]setmod
- [机房练习赛4.5]note
- [机房练习赛4.5]number
- [机房练习赛4.6] derange
- [机房练习赛7.7]haokunnan
- [机房练习赛7.11]graph
- 机房模拟赛 2017.7.3
- iOS 视频播放器旋转问题小结
- Android动画篇(一):圆形进度条CircleProgressBar
- Java排序方法sort的使用详解
- Java中&0xFF是什么意思?计算机的原码、补码和反码
- 高并发下线程安全的单例模式
- 机房练习赛kun (贪心 模拟)
- 文章标题
- DDl快速查看
- Android 图片网格布局控件
- 视频解决方案全评测一些知识技术
- Struts2教程____Struts2入门小Demo配置前告知(默认无法使用*.do请求地址)
- mysql workbench闪退
- 476. Number Complement
- c#-继承