• <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>
            隨筆-38  評論-23  文章-0  trackbacks-0
            #include<iostream>
            #include
            <cmath>
            #include
            <algorithm>
            using namespace std;
            #define M 100010
            #define MAXN 500
            #define MAXM 500
            int dp[M][18];
            int dp2[MAXN][MAXM][10][10]
            /*
            *一維RMQ ST算法
            *構造RMQ數組 makermq(int n,int b[]) O(nlog(n))的算法復雜度
            *dp[i]j] 表示從i到i+2^j -1中最大的一個值
            *dp[i][j]=max{dp[i][j-1],dp[i+2^(j-1)][j-1]}
            *查詢RMQ rmq(int s,int v)
            *將s ->v 分成兩個2^k的區間
            *即 k=(int)log2(s-v+1)
            *查詢結果應該為 max(dp[s][k],dp[v-2^k+1][k])
            */

            int rmq(int s,int v)
            {
                
            int k=(int)(log((v-s+1)*1.0)/log(2.0));
                
            return max(dp[s][k],dp[v-(1<<k)+1][k]);
            }

            void makermq(int n,int b[])
            {
                
            int i,j;
                
            for(i=1;i<=n;i++)
                    dp[i][
            0]=b[i];
                
            for(j=1;(1<<j)<=n;j++)
                    
            for(i=1;i+(1<<j)-1<=n;i++)
                        dp[i][j]
            =max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
            }


            /*
            *二維RMQ ST算法
            *構造RMQ數組 makermq(int n,int m,int b[][]) O(n*m*log(n)*log(m))算法復雜度
            *dp2[row][col][i][j] 表示 行從row ->row +2^i-1 列從col ->col +2^j-1 二維區間里最大值
            *dp2[row][col][i][j] = 下行
            *max{dp2[row][col][i][j-1],dp2[row][col][i-1][j],dp2[row][col+2^(j-1)][i][j-1],dp2[row+2^(i-1)][col][i-1][j]}
            *查詢RMQ rmq(int sx,int ex,int sy,int ey)
            *同一維的將sx->ex 分為兩個2^kx區間 將 sy->ey分為兩個2^ky的區間
            *kx=(int)log2(ex-sx+1) ky=(int)log2(ey-sy+1)
            *查詢結果為
            *max{dp2[sx][sy][kx][ky],dp2[sx][ey-2^ky+1][kx][ky],dp2[ex-2^kx+1][sy][kx][ky],dp2[ex-2^kx+1][ey-2^ky+1][kx][ky]}
            */


            void makermq(int n,int m,int b[][MAXM])
            {
                
            int row,col,i,j;
                
            for(row=1;row<=n;row++)
                    
            for(col=1;col<=m;col++)
                        dp2[row][col][
            0][0]=b[row][col];
                
            for(i=0;(1<<i)<=n;i++)
                    
            for(j=0;(1<<j)<=m;j++)
                    
            {
                        
            if(i==0&&j==0continue;
                        
            for(row=1;row+(1<<i)-1<=n;row++)
                            
            for(col=1;col+(1<<j)-1<=m;col++)
                            
            {
                            
            if(i==0)
                                dp2[row][col][i][j]
            =max(dp2[row][col][i][j-1],dp2[row][col+(1<<(j-1))][i][j-1]);
                            
            else
                                dp2[row][col][i][j]
            =max(dp2[row][col][i-1][j],dp2[row+(1<<(i-1))][col][i-1][j]);
                            }

                    }

            }

            int rmq(int sx,int ex,int sy,int ey)
            {
            int kx=(int)(log((ex-sx+1)*1.0)/log(2.0)),ky=(int)(log((ey-sy+1)*1.0)/log(2.0));
            return max(max(dp2[sx][sy][kx][ky],dp2[sx][ey-(1<<ky)+1][kx][ky]),max(dp2[ex-(1<<kx)+1][sy][kx][ky],dp2[ex-(1<<kx)+1][ey-(1<<ky)+1][kx][ky]));
            }
            posted on 2009-05-18 14:50 米游 閱讀(1615) 評論(0)  編輯 收藏 引用 所屬分類: ACM
            国产精品久久久久久久久久免费| 久久高潮一级毛片免费| 狠狠色噜噜色狠狠狠综合久久 | 亚洲国产成人乱码精品女人久久久不卡 | 精品人妻伦一二三区久久| 久久综合伊人77777| 午夜天堂av天堂久久久| 亚洲国产天堂久久综合网站| 青青青青久久精品国产h久久精品五福影院1421| 久久精品女人天堂AV麻| 久久久久成人精品无码中文字幕 | 久久AⅤ人妻少妇嫩草影院| 精品综合久久久久久97| 久久九九青青国产精品| 久久久久久久久久久| 超级碰久久免费公开视频| 中文字幕精品久久| 国产精品久久久天天影视香蕉| 伊人久久综合无码成人网| 国产精品青草久久久久福利99| 久久久久人妻精品一区| 一本色道久久88综合日韩精品 | 免费精品99久久国产综合精品| 久久久国产视频| 99久久精品国产一区二区三区| 人妻无码中文久久久久专区| 久久人人爽人人爽人人爽| 久久强奷乱码老熟女网站| 精品一区二区久久久久久久网站| 无码人妻久久一区二区三区免费丨| 久久久久亚洲精品男人的天堂| 九九久久99综合一区二区| 国内精品伊人久久久久av一坑| 久久久久国产精品嫩草影院| 伊人久久大香线蕉综合5g| 久久这里只有精品视频99| 久久精品人妻一区二区三区| 久久嫩草影院免费看夜色| 色偷偷88欧美精品久久久 | 久久亚洲春色中文字幕久久久| 亚洲精品第一综合99久久|