【NKOJ】火车调度

作为一名c++新手,看到一道水题,随手写篇博客

1.题目

//火车调度
//时间限制 : 10000 MS   空间限制 : 65536 KB
//评测说明 : 1s
//问题描述
//某城市有一个火车站,如下图 所示,现有 n(n < =10000)节火车车厢,顺序编号为 1,2,3,...,n,按编
//号连续依次从 A 方向的铁轨驶入车站,从 B 方向铁轨驶出。一旦车厢进入车站就不能再回到 A 方向的铁轨
//上;在车站的门口有工人可以将车厢拖出车站,工人一次只能拖一节车厢,并且只能将车厢拖入B方向的铁
//轨。一旦车厢出了车站就不能再回到车站。车站一开始为空,最多能停放 10000 节车厢。
//为了方便装货,调度员需要将车厢从新排列,问能否将车厢编号排列成A1,A2,......,An。也就是使车厢从B
//方向驶出的编号是A1,A2,......,An。如果能输出"yes",否则输出"no"。
//输入格式
//第一行,一个整数n
//第二行,n个用空格间隔的整数,表示出站时车厢编号要排列成的顺序A1,A2,......,An
//输出格式
//一行,一个单词"yes"或者"no"
//样例输入
//样例输入1:
//5
//3 2 5 4 1

//样例输入2:
//5
//3 1 5 4 2

//样例输出
//样例输出1:
//yes

//样例输出2:
//no

这题主要是考对栈的合理运用;

//我就不写用数组模拟了;

AC代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
int n,t[maxn];
int main()
{
	cin>>n;
    stack<int> s;
    int a=1,b=1;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&t[i]);
    }
    int k=1;
    while(b<=n)
    {
        if(a==t[b]) 
		{
			a++;
			b++;
		}
        else if(!s.empty()&&s.top()==t[b]) 
		{
            s.pop(); 
			b++;
        }
        else if(a<=n) 
		{
			s.push(a++);
		}
        else
		{
            k=0;
			break;
        }
    }
    printf("%s\n",k?"yes":"no");
    return 0;
}

MATLAB是一种在工程和科学领域广泛使用的编程语言和环境,可以用来解决各种复杂的计算问题,包括火车调度火车调度是指对火车列车的运行进行有效、安全和高效的安排和控制,以保证火车能够按时到达目的地,并最大限度地提高运输效率。MATLAB可以通过建立模型和编写算法来帮助进行火车调度。 首先,我们可以使用MATLAB对火车调度中的列车运行时间进行建模。通过收集列车发车和到站的时间数据,以及考虑到与其他列车的交叉和超车情况,我们可以使用MATLAB编写算法来计算每个列车的到达和离开时间,以及列车之间的最小时间间隔,从而保证火车的安全和高效运行。 其次,MATLAB还可以用于优化火车调度方案。我们可以将火车调度问题视为一个优化问题,在给定的时间范围内,通过最小化列车的延误时间、最大化列车数量和最小化列车之间的冲突等目标来寻找最优的调度方案。使用MATLAB的优化工具箱,我们可以编写相应的目标函数和约束条件,然后通过求解器找到最优的调度结果。 此外,MATLAB还可以通过数据分析和可视化来帮助火车调度。我们可以使用MATLAB的统计工具和数据分析功能来分析列车运行数据,找出列车运行的规律和关键因素,从而改进调度方案。另外,MATLAB的可视化功能可以将列车的运行轨迹、到站时间等信息绘制成图表或动态图像,方便调度员进行实时监控和决策。 综上所述,MATLAB是一个强大的工具,可以在火车调度中发挥重要作用。通过建立模型、编写算法、优化调度方案和进行数据分析与可视化,我们可以使用MATLAB实现火车调度的自动化和优化,提高列车运行的效率和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢铭轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值