3.2station

题意火车进入,然后要求以最大字典序输出
解题思路:先用一个数组储存当前位置之后最大的数字是什么,然后把已经进站的最后一节火车和还没进站的车的最大值,哪个更大,如果已经进站的更大,那么就先出站,否则就先一直把那些火车进站直到那个最大的火车,然后输出就好了。
#include<iostream>
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
#define sf scanf
#define scf(x) scanf("%d",&x)
#define scff(a,b) scanf("%d%d",&a,&b)
#define pf printf
#define prf(x) printf("%d\n",x)
#define mm(a,b) memset((a),(b),sizeof(a))
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
const int N=1e5+7;
int a[N],c[N];
stack<int>v;
int main()
{
mm(a,0);
int n,x,maxn=0;scf(n);
rep(i,1,n+1)
{
scf(x);
c[i]=a[i]=x;
}
per(i,n-1,1)//记录最大的数是多少
a[i]=max(a[i+1],a[i]);
int pos=1; //pos是已经进入的车辆数
pf("%d",a[1]);
for(;pos<=n;pos++)
{
if(c[pos]==a[1])
{
pos++;
break;
}else
v.push(c[pos]);
}
while(1)
{
if(pos>n&&v.empty()) break;//都走完且栈为空退出
if(pos>n)//都走完就只输出
{
pf(" %d",v.top());
v.pop();
}
else if(v.empty())//栈为空就判断当前这个是不是最大的,是就输出,不是就存入
{
if(a[pos]==c[pos])
pf(" %d",a[pos]);
else
v.push(c[pos]);
pos++;
}else
{
if(v.top()>a[pos])//如果已经进的更大就输出这辆
{
pf(" %d",v.top());
v.pop();
}else//否则
{
if(a[pos]==c[pos])//如果当前这个就是最大的就输出
pf(" %d",a[pos]);
else //否则进站
v.push(c[pos]);
pos++;
}
}
}
pf("\n");
return 0;
}
3.2station的更多相关文章
随机推荐
- 第十四节:Lambda、linq、SQL的相爱相杀(3)
一. SQL 开篇 1. where用法 #region 封装EF调用SQL语句查询 public static List<T> ExecuteQuery<T>(string ...
- ArcGis Python脚本——根据接图表批量裁切分幅影像
年前写了一个用渔网工具制作图幅接图表的文章,链接在这里: 使用ArcMap做一个1:5000标准分幅图并编号 本文提供一个使用ArcMap利用接图表图斑裁切一幅影像为多幅的方法. 第一步,将接图表拆分 ...
- 跨站请求伪造 | ajax
一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...
- shell使用lftp连接ftp和sftp,并可以指定私钥
lftp连接ftp在脚本中可以 lftp -c "open username:password@host:port; ls /Friso/20180822/click/mobile/SUCC ...
- 校园wifi
我校师生访问本校校园WiFi(SSID为UESTC-WiFi),不受任何影响,用户名和密码均不变,可使用本校帐号加后缀@uestc.edu.cn,登录并免费使用eduroam联盟机构的WiFi(SSI ...
- iTOP-iMX6开发板-Android-can测试例程介绍
TOP-iMX6开发板的 Android 源码的 can 例程包含在 Android 源码中,在“ packages/apps/”目 录下,如下图所示,这个是应用界面的源码. 如下图所示,can ...
- pc端,移动端css重置样式
pc: html{font-family:"Microsoft YaHei UI","Microsoft YaHei",sans-serif;-ms-text- ...
- 双系统下Ubuntu扩展根目录空间方法
最近,在Ubuntu16.04上装了个matlab,突然发现根目录空间只剩1G了,这哪儿够用啊,就想着有没有一种方法不用重装系统就可以扩展根目录空间呢?别说还真有,看下文. 开始之前先分出一些未分配空 ...
- 3D Slicer中文教程(四)—图像分割
1.数据获取 (1)下载3D Slicer自带的样本数据 (2)选择自由的数据 (3)网上数据库等其他方式下载数据 2.分割工具 Segment Editor是一个用于分割的模块.细分(也称为轮廓)描 ...
- ModuleNotFoundError: No module named 'video_back.urls'
新建Django项目时将settings,urls移除来时报错. 这是我所想要的项目结构 >>> 扁平结构. 将下面这个应用的名字删掉就可以了.