zoukankan      html  css  js  c++  java
  • 10.25模拟 列车调度

    2. 列车调度
    (manage.cpp/c/pas)
     【 问题描述 】
     有N辆列车,标记为1,2,3,…,N。它们按
    照一定的次序进站,站台共有K个轨道,轨
    道遵从 先进先出的原则。列车进入站台内
    的轨道后可以等待任意时间后出站,且所
    有列车不可后退。现在要使出站的顺序变
    为N,N-1,N-2,…,1,询问K的最小值是多
    少。
    例如下图中进站的顺序为1,3,2,4,8,6,9,5,7,则出站的顺序
    变为9,8,7,6,5,4,3,2,1。
    【 输入格式 】
     输入文件名为manage.in。
     输入共2行。
     第 1 行包含1个正整数N,表示N辆列车。
     第 2 行包含N个正整数,为1至N的一个排
    列,表示进站次序。
    【 输出格式 】
     输出文件名为manage.out。
     输出共1行,包含1个整数,表示站台内轨
    道数K的最小值。
    【 输入输出样例1 】
    manage.in manage.out
    3
    1 2 3
    3
    【 输入输出样例2 】
    manage.in manage.out
    9
    1 3 2 4 8 6 9 5 7
    5
    【 数据规模与约定 】
     对于30%的数据,N≤10;
     对于70%的数据,N≤2000;
     对于100%的数据,N≤100000。

    /*简单的O(n)模拟枚举 注意开大数组*/
    #include<cstdio>
    #include<iostream>
    using namespace std;
    int n,ans=0,k[100010],a[100010];
    int main()
    {
        freopen("manage.in","r",stdin);
        freopen("manage.out","w",stdout);
        scanf("%d",&n);
        for (int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        ans++;
        k[1]=a[1];    //k[i]是某个轨道的最小列车号 
        for (int i=2;i<=n;i++)
        {
            bool p=true;
            for (int j=1;j<=ans;j++)
                if (a[i]<k[j])
                {
                    p=false;
                    k[j]=a[i];
                    break;
                }
            if (p==true)
            {
                ans++;
                k[ans]=a[i];
            }
        }
        printf("%d",ans);
        fclose(stdin);
        fclose(stdout);
        return 0;
    }
  • 相关阅读:
    eclipse运行纯servlet程序
    VS中lib和dll
    eclipse部署web项目至本地的tomcat但在webapps中找不到
    【2018.07.28】(字符串/回文串)学习Manacher算法小记
    【2018.07.26】建立博客~
    【2018.07.27】(字符串/找相同)学习KMP算法小记
    [转]数据库范式那些事
    [转]Windows平台下的多线程编程
    mondrian schema学习(1)
    [转]SQL查询入门
  • 原文地址:https://www.cnblogs.com/xiaoqi7/p/5997876.html
Copyright © 2011-2022 走看看