• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            poj2533

            Longest Ordered Subsequence

            Time Limit: 2000MS Memory Limit: 65536K
            Total Submissions: 21310 Accepted: 9190

            Description

            A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK), where 1 <= i1 < i2 < ... < iK <= N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered subsequences, e. g., (1, 7), (3, 4, 8) and many others. All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).

            Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.

            Input

            The first line of input file contains the length of sequence N. The second line contains the elements of sequence - N integers in the range from 0 to 10000 each, separated by spaces. 1 <= N <= 1000

            Output

            Output file must contain a single integer - the length of the longest ordered subsequence of the given sequence.

            Sample Input

            7
            1 7 3 5 9 4 8

            Sample Output

            4
            
            最長上升子序列
            樸素的做法n^2的復雜度,n<=1000不會超時
            有nlogn的做法
             1//////樸素做法
             2#include<stdio.h>
             3#include<string.h>
             4#include<math.h>
             5#define MAX 1005
             6int a[MAX],f[MAX];
             7int n,i,j,ans;
             8int max(int a,int b)
             9{
            10    if (a>b) return a; else return b;
            11}

            12int main()
            13{
            14    scanf("%d",&n);
            15    for (i=1;i<=n ;i++) scanf("%d",&a[i]);
            16    f[1]=1;
            17    ans=f[1];
            18    for (i=2;i<=n ;i++ )
            19    {
            20        f[i]=1;
            21        for (j=1;j<=i-1 ;j++ )
            22        {
            23            if (a[j]<a[i])
            24            {
            25                f[i]=max(f[i],f[j]+1);
            26            }

            27        }

            28        ans=max(ans,f[i]);
            29    }

            30    printf("%d\n",ans);
            31    return 0;
            32}

            優(yōu)化的解法 nlogn
             1////二分查找優(yōu)化 nlogn
             2#include<stdio.h>
             3#include<string.h>
             4#include<math.h>
             5#define MAX 1005
             6int f[MAX];
             7int i,j,ans,n;
             8int left,right,x,mid;
             9int main()
            10{
            11    scanf("%d",&n);
            12    ans=0;
            13    for (i=1; i<=n ; i++)
            14    {
            15        scanf("%d",&x);
            16        left=1;
            17        right=ans;
            18        while (left<right)
            19        {
            20            mid=(left+right)/2;
            21            if (f[mid]<x) left=mid+1;
            22            else right=mid;
            23        }

            24        if (left>=right&&x>f[ans]||ans==0)
            25        {
            26            ans++;
            27            f[ans]=x;
            28        }

            29        else if (x<f[left])
            30        {
            31            f[left]=x;
            32        }

            33    }

            34    printf("%d\n",ans);
            35    return 0;
            36}

            posted on 2012-02-21 14:00 jh818012 閱讀(235) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統(tǒng)計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內(nèi)容較長,點擊標題查看
            • --王私江
            婷婷久久综合九色综合98| 99久久精品国产综合一区| 久久久这里有精品| 囯产极品美女高潮无套久久久 | 国内精品久久久久久久coent| 久久国产香蕉一区精品| 亚洲乱码中文字幕久久孕妇黑人| 色综合久久综合中文综合网| 国产成人精品久久综合| 囯产极品美女高潮无套久久久| 日本久久久久亚洲中字幕| 国内精品久久久久久中文字幕 | 久久亚洲精品国产精品婷婷| 日韩人妻无码精品久久免费一| 久久WWW免费人成—看片| 久久人妻少妇嫩草AV无码专区| 亚洲国产成人精品91久久久| 久久精品国产秦先生| 久久精品国产99国产精品亚洲| 青青热久久综合网伊人| 久久久国产乱子伦精品作者| 久久中文字幕视频、最近更新 | 日本亚洲色大成网站WWW久久 | 精产国品久久一二三产区区别| 国产成人精品久久亚洲高清不卡 | 久久99这里只有精品国产| 亚洲国产成人久久精品影视| 99久久免费国产精精品| 亚洲中文久久精品无码ww16 | 久久亚洲美女精品国产精品| 色诱久久久久综合网ywww| 国产成人精品久久免费动漫| 久久综合视频网| 久久涩综合| 久久精品国产精品亚洲下载| 亚洲精品国产成人99久久| 久久99精品国产99久久| 亚洲午夜精品久久久久久人妖| 久久精品国产亚洲av高清漫画| 麻豆成人久久精品二区三区免费| 久久久久久人妻无码|