POJ2533(最长递增子序列)

来源:互联网 发布:优化新闻源的排名 编辑:程序博客网 时间:2024/06/06 08:59

O(nlogn)的算法:

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int INF=100000000;int main(){  int n;  scanf("%d",&n);  int A[10000];  int dp[10000];  int i;  for (i=0;i<=n-1;i++)  scanf("%d",&A[i]);  for (i=0;i<=n-1;i++)  dp[i]=INF;  dp[0]=A[0];  for (i=1;i<=n-1;i++)  *lower_bound(dp,dp+n,A[i])=A[i];  for (i=n-1;i>=0;i--)  if (dp[i]!=INF)  {  printf("%d\n",i+1);  break;  }}

若是最长不减子序列应该改为upper_bound。

0 0
原创粉丝点击