您的位置:首页 > 其它

joj 1279 最长上升子序列 NLogN

2010-07-23 23:32 369 查看
#include<iostream>
#include<cstdlib>
using namespace std;
int a[10005],dp[10005],ord[1005];
int main()
{
int n=1;
while(cin>>a
) n++;n--;
int len=0,maxn=0;
for(int i=1;i<=n;i++)
{
int left=1,right=len,mid;
while(right>=left)
{
mid=(left+right)/2;
if(ord[mid]>=a[i]) right=mid-1;
else left=mid+1;
}
dp[i]=left;
ord[left]=a[i];
if(left>len) len=left;
if(dp[i]>maxn) maxn=dp[i];
}
cout<<"Max hits: "<<maxn<<endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: