• <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
            热RE99久久精品国产66热| 超级碰碰碰碰97久久久久| 99久久99久久久精品齐齐| 国产精品久久99| a级毛片无码兔费真人久久| 国产激情久久久久影院小草| 久久亚洲电影| 99久久无码一区人妻a黑| 天天爽天天爽天天片a久久网| 久久久久久亚洲精品不卡| 熟妇人妻久久中文字幕| 亚洲天堂久久精品| 日韩精品久久久肉伦网站| 丁香五月综合久久激情| 久久精品国产男包| 国产三级观看久久| 久久精品人人做人人爽97| 久久久久这里只有精品| 久久久亚洲欧洲日产国码二区 | 久久精品人妻一区二区三区| 99精品国产综合久久久久五月天| 精品久久香蕉国产线看观看亚洲| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 99久久99久久精品国产| 伊人久久大香线蕉亚洲五月天| 国内精品伊人久久久久| 天天爽天天狠久久久综合麻豆| 亚洲日本va午夜中文字幕久久| 久久美女网站免费| 国产精品久久久亚洲| 亚洲精品美女久久777777| 国产精品久久久久a影院| 久久99精品国产99久久6| 久久免费精品视频| 2022年国产精品久久久久| 色欲av伊人久久大香线蕉影院| 人妻无码精品久久亚瑟影视| 色综合合久久天天给综看| 国内精品伊人久久久久影院对白| 99久久中文字幕| 亚洲国产精品久久久久网站|