青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Reiks的技術(shù)博客

C/C++/STL/Algorithm/D3D
posts - 17, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
/*
RMQ(Range Minimum/Maximum Query)問(wèn)題:
   RMQ問(wèn)題是求給定區(qū)間中的最值問(wèn)題。當(dāng)然,最簡(jiǎn)單的算法是O(n)的,但是對(duì)于查詢次數(shù)很多(設(shè)置多大100萬(wàn)次),O(n)的算法效率不夠??梢杂镁€段樹(shù)將算法優(yōu)化到O(logn)(在線段樹(shù)中保存線段的最值)。不過(guò),Sparse_Table算法才是最好的:它可以在O(nlogn)的預(yù)處理以后實(shí)現(xiàn)O(1)的查詢效率。下面把Sparse Table算法分成預(yù)處理和查詢兩部分來(lái)說(shuō)明(以求最小值為例)。

預(yù)處理:
預(yù)處理使用DP的思想,f(i, j)表示[i, i+2^j - 1]區(qū)間中的最小值,我們可以開(kāi)辟一個(gè)數(shù)組專門來(lái)保存f(i, j)的值。
例如,f(0, 0)表示[0,0]之間的最小值,就是num[0], f(0, 2)表示[0, 3]之間的最小值, f(2, 4)表示[2, 17]之間的最小值
注意, 因?yàn)閒(i, j)可以由f(i, j - 1)和f(i+2^(j-1), j-1)導(dǎo)出, 而遞推的初值(所有的f(i, 0) = i)都是已知的
所以我們可以采用自底向上的算法遞推地給出所有符合條件的f(i, j)的值。

查詢:
假設(shè)要查詢從m到n這一段的最小值, 那么我們先求出一個(gè)最大的k, 使得k滿足2^k <= (n - m + 1).
于是我們就可以把[m, n]分成兩個(gè)(部分重疊的)長(zhǎng)度為2^k的區(qū)間: [m, m+2^k-1], [n-2^k+1, n];
而我們之前已經(jīng)求出了f(m, k)為[m, m+2^k-1]的最小值, f(n-2^k+1, k)為[n-2^k+1, n]的最小值
我們只要返回其中更小的那個(gè), 就是我們想要的答案, 這個(gè)算法的時(shí)間復(fù)雜度是O(1)的.
例如, rmq(0, 11) = min(f(0, 3), f(4, 3))
*/



#include
<iostream>
#include
<cmath>
using namespace std;
#define MAXN 1000000
#define mmin(a, b)   ((a)<=(b)?(a):(b))
#define mmax(a, b)   ((a)>=(b)?(a):(b))

int num[MAXN];
int f1[MAXN][100];
int f2[MAXN][100];

//測(cè)試輸出所有的f(i, j)
void dump(int n)

    
int i, j;
    
for(i = 0; i < n; i++)
    
{
        
for(j = 0; i + (1<<j) - 1 < n; j++)
        
{
            printf(
"f[%d, %d] = %d\t", i, j, f1[i][j]);
        }

        printf(
"\n");
    }

    
for(i = 0; i < n; i++)
       printf(
"%d ", num[i]);
    printf(
"\n");
    
for(i = 0; i < n; i++)
    
{
        
for(j = 0; i + (1<<j) - 1 < n; j++)
        
{
            printf(
"f[%d, %d] = %d\t", i, j, f2[i][j]);
        }

        printf(
"\n");
    }

    
for(i = 0; i < n; i++)
        printf(
"%d ", num[i]);
    printf(
"\n");
}


//sparse table算法
void st(int n)

    
int i, j, k, m;
    k 
= (int) (log((double)n) / log(2.0)); 
    
for(i = 0; i < n; i++
    
{
        f1[i][
0= num[i]; //遞推的初值
        f2[i][0= num[i];
    }

    
for(j = 1; j <= k; j++)
    
//自底向上遞推
        for(i = 0; i + (1 << j) - 1 < n; i++)
        
{
            m 
= i + (1 << (j - 1)); //求出中間的那個(gè)值
            f1[i][j] = mmax(f1[i][j-1], f1[m][j-1]);
            f2[i][j] 
= mmin(f2[i][j-1], f2[m][j-1]);
        }

    }

}


//查詢i和j之間的最值,注意i是從0開(kāi)始的
void rmq(int i, int j) 

    
int k = (int)(log(double(j-i+1)) / log(2.0)), t1, t2; //用對(duì)2去對(duì)數(shù)的方法求出k
    t1 = mmax(f1[i][k], f1[j - (1<<k) + 1][k]);
    t2 
= mmin(f2[i][k], f2[j - (1<<k) + 1][k]);
    printf(
"%d\n",t1 - t2);
}


int main()
{
    
int i,N,Q,A,B;
    scanf(
"%d %d"&N, &Q);
    
for (i = 0; i < N; ++i)
    
{
        scanf(
"%d", num+i);
    }


    st(N); 
//初始化
    
//dump(N); //測(cè)試輸出所有f(i, j)
    while(Q--)
    
{
        scanf(
"%d %d",&A,&B);
        rmq(A
-1, B-1);
    }

    
return 0;
}

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线视频观看| 激情视频一区| 久久综合九色综合欧美狠狠| 午夜精品久久久久久久久久久| 玖玖在线精品| 欧美国产一区在线| 欧美日韩色一区| 亚洲国产精品久久久久秋霞影院 | 日韩一级精品| 国产综合精品一区| 亚洲摸下面视频| 久久久国产91| 亚洲人在线视频| 久久影院午夜片一区| 蜜臀av在线播放一区二区三区| 欧美日韩美女| 亚洲天天影视| 久久久久久噜噜噜久久久精品| 欧美高清一区| 欧美激情中文不卡| 久久青草久久| 国产欧美另类| 9色精品在线| 99re热这里只有精品视频| 亚洲在线中文字幕| 欧美精品黄色| 亚洲一区在线观看视频| 欧美丰满高潮xxxx喷水动漫| 亚洲一二三级电影| 国产一区二区三区久久久久久久久| 亚洲精品九九| 久久亚洲午夜电影| 欧美怡红院视频| 亚洲福利视频二区| 在线观看成人av| 99精品视频免费全部在线| 黄色亚洲大片免费在线观看| 久久美女性网| 亚洲视频一二| 欧美精品一区二区三区视频| 亚洲午夜激情| 亚洲日本中文字幕区| 久久经典综合| 亚洲国产精品久久精品怡红院| 久久国产一区二区三区| 99精品视频免费| 国产深夜精品福利| 午夜视频一区| 日韩午夜三级在线| 国产一区在线视频| 久久精品国产第一区二区三区最新章节| 亚洲激情成人| 欧美一区二区精品| 国产一区二区三区黄视频| 亚洲一区在线观看视频| 久久精品国产欧美激情| 久久亚洲综合网| 国产视频一区二区在线观看 | 欧美成人一区二区| 久久久国产精品亚洲一区| 老司机免费视频久久| 国产欧美欧美| 久久久久高清| 欧美精品七区| 亚洲视频免费在线观看| 亚洲欧洲综合| 欧美在线视频在线播放完整版免费观看 | 久久尤物视频| 日韩网站在线看片你懂的| 亚洲欧美日韩成人| 国产亚洲福利| 美女在线一区二区| 欧美二区视频| 国内精品久久久久影院色| 欧美一区亚洲二区| 欧美国产日韩亚洲一区| 欧美jjzz| 亚洲四色影视在线观看| 亚洲激情视频在线播放| 91久久在线观看| 欧美日韩精品高清| 另类酷文…触手系列精品集v1小说| 久久青青草综合| 久久天天躁狠狠躁夜夜av| 欧美一区三区三区高中清蜜桃| 国际精品欧美精品| 一区二区av在线| 一区二区在线免费观看| 亚洲第一久久影院| 好吊色欧美一区二区三区四区| 欧美日韩在线影院| 欧美精品久久天天躁| 99精品视频免费| 久久久一区二区| 日韩视频一区二区三区在线播放免费观看 | 欧美韩日高清| 亚洲国产精品久久91精品| 久久久久综合网| 蜜臀久久99精品久久久久久9 | 亚洲日本国产| 欧美好吊妞视频| 亚洲欧洲日韩在线| 欧美在线观看天堂一区二区三区| 亚洲最新视频在线| 麻豆精品一区二区av白丝在线| 久久青草欧美一区二区三区| 精品成人a区在线观看| 久久人人97超碰国产公开结果 | 欧美在线地址| 国产视频久久久久久久| 久久av一区二区三区漫画| 蜜桃av噜噜一区| 99精品国产高清一区二区| 欧美天堂亚洲电影院在线播放| 亚洲性视频网址| 久久亚洲电影| 99国产精品久久| 国产麻豆精品久久一二三| 久久激情久久| 亚洲精品欧美在线| 欧美在线一区二区| 在线免费观看日本欧美| 欧美日本高清视频| 午夜精品久久久久久久久久久| 久久尤物视频| 在线亚洲国产精品网站| 国产精品夜色7777狼人| 久久天堂av综合合色| 99精品国产热久久91蜜凸| 久久精品国产欧美亚洲人人爽| 亚洲激情网站| 国产精品美女久久久久aⅴ国产馆| 欧美中日韩免费视频| 亚洲国产免费| 欧美一区二区三区精品| 欧美sm视频| 亚洲视频狠狠| 黄色成人免费观看| 欧美日本免费| 久久久久久久91| 一区二区三区日韩| 欧美电影免费观看大全| 欧美亚洲一区二区在线观看| 亚洲福利国产| 国产一区999| 欧美午夜久久| 欧美不卡高清| 欧美在线免费播放| 一区二区三区久久网| 欧美电影电视剧在线观看| 欧美亚洲一级片| 一区二区av在线| 在线看视频不卡| 国产一区二区三区观看| 国产精品a级| 欧美激情中文不卡| 美国十次了思思久久精品导航| 午夜宅男久久久| 亚洲一级一区| 亚洲无吗在线| 一区二区三区国产| 亚洲精品亚洲人成人网| 欧美电影打屁股sp| 欧美.日韩.国产.一区.二区| 欧美一区二区视频在线| 中文在线不卡| 夜夜嗨网站十八久久| 亚洲国产日韩一级| 在线欧美日韩精品| 激情六月婷婷久久| 一区视频在线看| 在线看视频不卡| 在线看片欧美| 亚洲国产美女精品久久久久∴| 亚洲电影免费在线| 亚洲大胆人体在线| 亚洲高清毛片| 亚洲黄色毛片| 亚洲伦理在线观看| 亚洲美女尤物影院| 日韩亚洲欧美成人一区| 亚洲精品视频在线观看免费| 亚洲欧洲精品一区二区三区波多野1战4 | 91久久精品国产91久久| 樱桃国产成人精品视频| 一区二区三区中文在线观看| 黄色资源网久久资源365| 激情久久久久久久久久久久久久久久| 国产一区免费视频| 伊人久久婷婷色综合98网| 在线免费观看日韩欧美| 亚洲另类一区二区| 亚洲女与黑人做爰| 久久国内精品视频| 欧美电影免费观看高清完整版| 日韩视频在线永久播放| 亚洲欧美日韩在线观看a三区| 久久精品人人做人人爽| 欧美国产一区在线| 国产精品一区二区久久精品|