Longest Ordered Subsequence (最长上升子序列)
2015-02-06 14:07
183 查看
Description
Anumericsequenceofaiisorderedifa1<a2<...<aN.Letthesubsequenceofthe
givennumericsequence(a1,a2,...,aN)beanysequence(ai1,ai2,
...,aiK),where1<=i1<i2<...<iK<=N.Forexample,
sequence(1,7,3,5,9,4,8)hasorderedsubsequences,e.g.,(1,7),(3,4,8)andmanyothers.Alllongestorderedsubsequencesareoflength4,e.g.,(1,3,5,8).
Yourprogram,whengiventhenumericsequence,mustfindthelengthofitslongestorderedsubsequence.
Input
ThefirstlineofinputfilecontainsthelengthofsequenceN.Thesecondlinecontainstheelementsofsequence-Nintegersintherangefrom0to10000each,separatedbyspaces.1<=N<=1000
Output
Outputfilemustcontainasingleinteger-thelengthofthelongestorderedsubsequenceofthegivensequence.
SampleInput
SampleOutput
Anumericsequenceofaiisorderedifa1<a2<...<aN.Letthesubsequenceofthe
givennumericsequence(a1,a2,...,aN)beanysequence(ai1,ai2,
...,aiK),where1<=i1<i2<...<iK<=N.Forexample,
sequence(1,7,3,5,9,4,8)hasorderedsubsequences,e.g.,(1,7),(3,4,8)andmanyothers.Alllongestorderedsubsequencesareoflength4,e.g.,(1,3,5,8).
Yourprogram,whengiventhenumericsequence,mustfindthelengthofitslongestorderedsubsequence.
Input
ThefirstlineofinputfilecontainsthelengthofsequenceN.Thesecondlinecontainstheelementsofsequence-Nintegersintherangefrom0to10000each,separatedbyspaces.1<=N<=1000
Output
Outputfilemustcontainasingleinteger-thelengthofthelongestorderedsubsequenceofthegivensequence.
SampleInput
7 1735948
SampleOutput
4
#include<stdio.h>
intzhan[1000];
intmain()
{
intn,a,l,top;
scanf("%d",&n);
top=0;
zhan[0]=-1;//第一个元素可能为0,所以栈底设为-1
for(inti=0;i<n;i++)
{
scanf("%d",&a);
if(a>zhan[top])
{
zhan[++top]=a;
}
else
{
intlow=1,high=top;//栈的最底端是1,最上面是top
intmid;
while(low<=high)//利用二分法查找在栈中比a大的第一个数
{
mid=(low+high)/2;
if(a>zhan[mid])
{
low=mid+1;
}
else
{
high=mid-1;
}
}
zhan[low]=a;//找到了就替换啊
}
}
printf("%d\n",top);//top是最顶端的,top是几就代表那个序列多长
return0;
}
相关文章推荐
- poj 2533 Longest Ordered Subsequence (最长上升子序列)
- Longest Ordered Subsequence与最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)
- Longest Ordered Subsequence - POJ 2533 最长上升子序列
- poj 2533 Longest Ordered Subsequence(最长上升子序列)
- Longest Ordered Subsequence POJ - 2533(最长上升子序列)
- POJ 2533 Longest Ordered Subsequence 最长上升子序列
- POJ - 2533 Longest Ordered Subsequence(最长上升子序列)
- POJ 2533-Longest Ordered Subsequence(dp_最长上升子序列)
- poj2533--Longest Ordered Subsequence(dp:最长上升子序列)
- POJ - 2533 Longest Ordered Subsequence(最长上升子序列)
- poj 2533 Longest Ordered Subsequence (DP:最长上升子序列)
- Longest Ordered Subsequence 最长上升子序列
- poj_2533 Longest Ordered Subsequence(最长上升子序列)
- POJ 2533 Longest Ordered Subsequence(LIS:最长上升子序列)
- POJ 2533 Longest Ordered Subsequence(最长上升子序列O(n*n)解法)
- 【dp-LIS】牛客网 --最长上升子序列 POJ 2533--Longest Ordered Subsequence(LIS模板题)
- 【POJ 2533】Longest Ordered Subsequence(最长上升子序列LIS)
- poj-2533-Longest Ordered Subsequence-最长上升子序列
- poj 2533 Longest Ordered Subsequence(LIS(最长上升子序列))
- poj2533-Longest Ordered Subsequence(最长上升子序列)