PAT L2-014【二分】
思路:
最后发现对当前列车比我大的编号的栈有没有就好了,所以开个vector存一下,然后二分一下vector找一下第一个比我大的数就好了
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e5+10; int n,a[N]; vector<int>q; int main() { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); q.clear(); int ans=0; for(int i=0;i<n;i++) { int sz=q.size(); if(!sz) { q.push_back(a[i]); ans++; } else { vector<int>::iterator e=upper_bound(q.begin(),q.end(),a[i]); if(e==q.end()) { q.push_back(a[i]); ans++; } else { int d=e-q.begin(); q[d]=a[i]; } } } printf("%d\n",ans); return 0; }