//Longest Ordered Subsequence
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[1000+10],g[1000+10],d[1000+10];
#define INF 1000000000
int main()
{
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++)
g[i]=INF;
int ans=0;
for(i=0;i<n;i++)
{
int k=lower_bound(g+1,g+1+n,a[i])-g;
d[i]=k;
g[k]=a[i];
ans=max(ans,d[i]);
}
printf("%d\n",ans);
}
return 0;
}
poj 2533 Longest Ordered Subsequence(LIS(最长上升子序列))
最新推荐文章于 2024-08-17 03:38:43 发布
本文介绍了一种寻找最长有序子序列的算法实现,通过使用动态规划思想与二分查找技术来高效解决该问题。该算法可以处理大规模数据集,并通过不断更新记录来找到序列中的最长递增部分。
2101

被折叠的 条评论
为什么被折叠?



