L2-014. 列车调度

#include<bits/stdc++.h>
using namespace std;
int b[100010];
vector<int>ans;
int main()
{
	int n,cnt=0;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>b[i];
	ans.push_back(b[1]);
	for(int i=2;i<=n;i++){
		if(b[i]<ans[ans.size()-1])*lower_bound(ans.begin(),ans.end(),b[i]) = b[i];
		else ans.push_back(b[i]);
	} 
	
	printf("%d\n",ans.size());
	return 0;
 } 


哦 既然根据规则 不管什么顺序进来 都得按照1,2,3...n-1,n的顺序来的话

由于列车要逆序输出 那么如果同一轨道 大号车在小号车后面 那么无论怎样 都会使得大号车走在小号车后面

所以当号码超过某个轨道的队尾时 就要重新开个轨道来处理

那么就是二分所有队尾咯~

猜你喜欢

转载自blog.csdn.net/qq_33859479/article/details/79595489