Description
Input
Output
Sample Input
Sample1:
3
1 2 3
Sample2:
9
1 3 2 4 8 6 9 5 7
Sample Output
Sample1:
3
Sample2:
5
Data Constraint
思路
这题我用的是贪心做法
首先,一个列车进队,必须满足前面的车的编号大于它。
不难想到我们的最优方案是让列车入编号刚好大于它的那一队。
所以我们可以用set维护。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
int ans,n;
set<int> q;
int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
int x;
scanf("%d",&x);
set<int>::iterator j=q.upper_bound(x);
if(j==q.end()) q.insert(x),ans++;else q.erase(*j),q.insert(x);
}
printf("%d",ans);
}