• <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>

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            POJ 1631 Bridging signals——最長上升子序列 DP(nlogn)

            題目說了很多,其實就是一個最長上升子序列的問題,傳統的n^2算法在這里會超時,所以改用二分的算法,1000MS的時限用掉110MS,差強人意,但不知還有沒有更快的算法,希望各位大牛能指點一二。
            代碼如下:(閱讀前建議先閱讀我轉的上一篇關于算法介紹的文章)
            #include<iostream>
            #include
            <cstdio>
            using namespace std;


            const int N =  40000;

            int a[N], C[N], f[N]; // f[i]用于記錄a[0i]的最大長度

            int bsearch(const int *C, int size, const int &a) 

            {
                
                
            int l=0, r=size-1;
                
                
            while( l <= r ) 
                    
                
            {
                    
                    
            int mid = (l+r)/2;
                    
                    
            if( a > C[mid-1&& a <= C[mid] ) return mid; // >&&<= 換為: >= && <
                    
                    
            else if( a < C[mid] ) r = mid-1;
                    
                    
            else l = mid+1;
                    
                }

                
            }


            int LIS(const int *a, const int &n){
                
                
            int i, j, size = 1;
                
                C[
            0= a[0]; f[0= 1;
                
                
            for( i=1; i < n; ++i ){
                    
                    
            if( a[i] <= C[0] ) j = 0;                 // <= 換為: <
                    
                    
            else if( a[i] >C[size-1] ) j = size++;   // > 換為: >= 
                    
                    
            else j = bsearch(C, size, a[i]);
                    
                    C[j] 
            = a[i]; f[i] = j+1;
                    
                }

                
                
            return size;
                
            }




            int main()
            {
                
            int testcase;
                
            int n;
                scanf(
            "%d",&testcase);
                
            int i,j;
                
            for(i=1;i<=testcase;i++)
                
            {
                    scanf(
            "%d",&n);
                    
            for(j=0;j<n;j++)
                        scanf(
            "%d",&a[j]);
                    printf(
            "%d\n",LIS(a,n));
                }

                
            return 0;
            }

            posted on 2009-08-12 19:14 abilitytao 閱讀(1855) 評論(1)  編輯 收藏 引用

            評論

            # re: POJ 1631 Bridging signals——最長上升子序列 DP(nlogn)[未登錄] 2009-08-12 20:48 Bill Hsu

            這題。。  回復  更多評論   

            无码精品久久一区二区三区| 理论片午午伦夜理片久久 | 99久久成人国产精品免费| 久久久无码精品亚洲日韩蜜臀浪潮| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久最新精品国产| 久久综合亚洲色HEZYO社区| 精品久久久久久无码专区| 久久一区二区三区免费| 久久久久久亚洲Av无码精品专口| 国产成人久久777777| 色偷偷88888欧美精品久久久 | 麻豆精品久久久久久久99蜜桃| 久久精品国产99国产精品亚洲| 久久亚洲精品成人AV| 久久青青草原综合伊人| 久久天天婷婷五月俺也去| 狠狠色婷婷综合天天久久丁香 | 久久久久久国产精品无码下载| segui久久国产精品| 久久精品毛片免费观看| 欧美久久亚洲精品| 九九久久精品国产| 66精品综合久久久久久久| 国产成人久久激情91| 人妻精品久久无码区| 久久夜色精品国产亚洲| 偷偷做久久久久网站| 久久青青草视频| 漂亮人妻被中出中文字幕久久 | 久久人人爽人人爽人人片AV高清| 国产三级精品久久| 国产亚洲精午夜久久久久久| 精品久久一区二区三区| 精品久久久久久成人AV| 国产情侣久久久久aⅴ免费| 亚洲AV日韩AV永久无码久久| 亚洲中文字幕无码久久精品1 | 久久亚洲高清综合| 伊人久久大香线蕉无码麻豆| 久久久精品人妻一区二区三区蜜桃|