1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#include <string.h> #include <algorithm> using namespace std; int dp[101000],a[101000],n; int () { int len=1; dp[1]=-a[1]; for(int i=2;i<=n;++i) { if(-a[i]>=dp[len]){ dp[++len]=-a[i]; } else { int pos=upper_bound(dp+1,dp+len,-a[i])-dp; dp[pos]=-a[i]; } } return len; } int main() { cin>>n; for(int i=1;i<=n;++i) { cin>>a[i]; } cout<<LIS_nlgn()<<endl; return 0; } ```cpp
|
近期评论