POJ2533-Longest Ordered Subsequence
阿新 • • 發佈:2019-01-28
之前做的方法有點忘了,思路不太好想,今天看一個視訊的方法是用二分解決,簡單易懂。
視訊也分享下,
免費的哦。#include<iostream> #include<cstring> #include<cstdio> #include<math.h> #include<vector> #include<algorithm> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF){ int a[1010]; for(int i=0;i<n;i++) scanf("%d",&a[i]); int dp[1100]={0}; int k=0; dp[k++]=a[0]; for(int i=1;i<n;i++) { int o=lower_bound(dp,dp+k,a[i])-dp; if(dp[o]<a[i]) if(dp[o]==0) dp[o]=a[i],k=max(k,o+1); else dp[o]=min(dp[o],a[i]),k=max(k,o+1); else dp[o]=a[i]; } printf("%d\n",k); } return 0; }