您的位置:首页 > 产品设计 > UI/UE

poj 2533 Longest Ordered Subsequence

2016-02-27 19:36 549 查看
总算会做nlogn了。。

更改的是内部结构,数目不变。。

就是相当于更合理的替换了以前的。。

别人博客写的很好的代码:http://blog.sina.com.cn/s/blog_76344aef0100scyq.html

以及别人很详细的思路:http://blog.csdn.net/dangwenliang/article/details/5728363

自己看了这两个理解了。。

在这里谢谢他们。。

附上自己写的。。

[code]#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn];
int dp[maxn];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        a[0]=-0x3f3f3f3f;
        dp[0]=-0x3f3f3f3f;
        int len=0;
        for(int i=1;i<=n;i++)
        {
            int left=1;
            int right=len;
            if(a[i]>dp[len])
                dp[++len]=a[i];
            else
            {
                int left=1;
                int right=len;
                int mid;
                while(left<=right)
                {
                    mid=(left+right)/2;
                    if(dp[mid]>a[i])
                    {
                        right=mid-1;
                    }
                    else
                    {
                        left=mid+1;
                    }
                }
                dp[left]=a[i];
            }
        }
        printf("%d\n",len);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: