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

    Input

      第一行为整数N,表示列车数
      第二行为N个正整数,为1到N的一个排列,表示进站次序

    Output

      输出仅一行一个整数,表示轨道数K的最小值。

    Sample1:

    3
    1 2 3

    Sample2:

    9
    1 3 2 4 8 6 9 5 7

    Sample1:

    3

    Sample2:

    5

    Hint

    【数据范围】
      对于30%的数据,1<=N<=10
      对于70%的数据,1<=N<=2000
      对于100%的数据,1<=N<=100000


    思路

    • 大概就是贪心和二分吧,还能用线段树?
    • 发现每个通道前面的车一定比后面的序号大(先出),现性找一个最小的超时,所以就诞生了二分(鉴于此人二分有误差,所以在二分后右检查了一下)

    代码

    #include <iostream>
    #include <cstdio>
    #define maxn 100005
    using namespace std;
    int cnt,v[maxn],n,a[maxn];
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i)
    	{
    		scanf("%d",&a[i]); int flag=0;
    		int l=0,r=cnt,mid=0;
    		while(l<r)
    		{
    			mid=(l+r)>>1;
    			if(v[mid]>a[i]) r=mid;
    			else l=mid+1;
    		}
    		if(v[mid-1]>a[i]) v[mid-1]=a[i];
    		else if(v[mid]>a[i]) v[mid]=a[i];
    		else if(v[mid+1]>a[i]) v[mid+1]=a[i];
    		else v[++cnt]=a[i];
    	}
    	printf("%d
    ",cnt);
    	return 0;
    }
    
  • 相关阅读:
    Network(树形dp)洛谷2899
    2590 树的统计
    LCT 最小生成树
    几种贪心小结
    snmp
    div页面跳转
    2017.11.2总结,回顾及成果
    2017.11.1知识总结及回顾
    check,form,单选框与复选框总结
    HTML空格字符
  • 原文地址:https://www.cnblogs.com/wuwendongxi/p/13380339.html
Copyright © 2011-2022 走看看