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

poj 2823 Sliding Window 單調(diào)隊列

   這道題的意思是給定一個長N的整數(shù)序列,用一個大小為K的窗口從頭開始覆蓋,問第1-第N-K次窗口里面最大的數(shù)字和最小的數(shù)字。
   剛開始還以為優(yōu)先級隊列可以做,發(fā)現(xiàn)無法刪除最前面的元素。估計用線段樹這個題也是可以解得。用這個題學(xué)了下單調(diào)隊列。
   
   單調(diào)隊列正如其名,是一個從小到大排序的隊列,而且能夠保證所有的元素入隊列一次出隊列一次,所以平攤到每個元素的復(fù)雜度
就是O(1)。
   對于這個題單調(diào)隊列的使用。以序列1 3 -1 -3 5 3 6 7舉例。
   1)元素類型:一個結(jié)構(gòu)體,包含數(shù)字大小和位置,比如(1,1),(3,2)。
   2)插入操作:從隊尾開始查找,把隊尾小于待插入元素的元素全部刪除,再加入待插入的元素。這個操作最壞的
情況下是O(n),但是我們采用聚集分析的方法,知道每個元素最多刪除一次,那么N個元素刪除N次,平攤到每一次
操作的復(fù)雜度就是O(1)了。
   3)刪除隊首元素:比如本文給的那個題,窗口一直往后移動,每一次移動都會刪除一個元素,所以很可能隊首會是要
刪除的元素,那么每次移動窗口的元素要進行一次檢查,如果隊首元素失效的話,就刪掉隊首元素。

   代碼的實現(xiàn),我是包裝deque實現(xiàn)了一個模版類。速度很不好,居然跑了11s多才過,幸虧給了12s的時間,看status又500多ms
就過了的。估計數(shù)組實現(xiàn)會快很多。

   代碼如下:
#include <stdio.h>
#include <deque>
#include <algorithm>
using namespace std;
#define MAX_N (1000000 + 100)
int nNum[MAX_N];
int nN, nK;

struct Small
{
    int nValue;
    int nIndex;
    Small(int nV, int index):nValue(nV), nIndex(index) {}
    bool operator < (const Small& a) const
    {
        return nValue < a.nValue;
    }
};

struct Big
{
    int nValue;
    int nIndex;
    Big(int nV, int index):nValue(nV), nIndex(index) {}
    bool operator < (const Big& a) const
    {
        return nValue > a.nValue;
    }
};

//單調(diào)隊列
template <typename T> class Monoque
{
    deque<T> dn;

public:
    void Insert(T node)
    {
        int nPos = dn.size() - 1;
        while (nPos >=0 && node < dn[nPos])
        {
            --nPos;
            dn.pop_back();
        }
        dn.push_back(node);
    }

    int Top()
    {
        return dn.front().nValue;
    }

    void Del(int nBeg, int nEnd)
    {
        if (dn.size() > 0)
        {
            if (dn.front().nIndex < nBeg || dn.front().nIndex > nEnd)
            {
                dn.pop_front();
            }
        }
    }
};

int main()
{
    while (scanf("%d%d", &nN, &nK) == 2)
    {
        int i;
        for (i = 0; i < nN; ++i)
        {
            scanf("%d", &nNum[i]);
        }
        Monoque<Small> minQ;
        Monoque<Big> maxQ;

        for (i = 0; i < nK; ++i)
        {
            minQ.Insert(Small(nNum[i], i));
        }

        for (i = 0; i < nN - nK; ++i)
        {
            printf("%d ", minQ.Top());
            minQ.Insert(Small(nNum[i + nK], i + nK));
            minQ.Del(i + 1, i + nK);
        }
        printf("%d\n", minQ.Top());

        for (i = 0; i < nK; ++i)
        {
            maxQ.Insert(Big(nNum[i], i));
        }

        for (i = 0; i < nN - nK; ++i)
        {
            printf("%d ", maxQ.Top());
            maxQ.Insert(Big(nNum[i + nK], i + nK));
            maxQ.Del(i + 1, i + nK);
        }
        printf("%d\n", maxQ.Top());
    }

    return 0;
}

posted on 2012-09-02 14:25 yx 閱讀(1713) 評論(2)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

評論

# re: poj 2823 Sliding Window 單調(diào)隊列 2012-09-04 09:16 畢達哥拉斯半圓

問個問題,如果窗口的長度變的,復(fù)雜度該如何分析呢?  回復(fù)  更多評論   

# re: poj 2823 Sliding Window 單調(diào)隊列 2012-09-04 16:48 遠行

@畢達哥拉斯半圓
總的應(yīng)該還是O(n),還是用聚集分析的方法,所有元素就入一次隊列,
最多出一次隊列,平攤到每個元素就是O(1)  回復(fù)  更多評論   

<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

導(dǎo)航

統(tǒng)計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學(xué)

網(wǎng)友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲丝袜av一区| 欧美精品电影在线| 欧美国产在线电影| 亚洲午夜激情在线| 国产日韩精品在线| 欧美啪啪成人vr| 欧美日韩国产不卡在线看| 欧美国产日韩免费| 欧美日韩一区二区三区在线 | 国产一区二区三区高清| 狠狠色丁香久久综合频道| 136国产福利精品导航网址| 亚洲精品一区二区在线| 亚洲影院在线观看| 久久久精品国产一区二区三区 | 亚洲免费高清视频| 亚洲男人av电影| 久久久水蜜桃| 亚洲精品一区二区在线观看| 亚洲午夜av电影| 美女视频一区免费观看| 欧美日韩精品在线| 狠狠色丁香婷综合久久| 亚洲宅男天堂在线观看无病毒| 欧美一区二区福利在线| 久热这里只精品99re8久| 亚洲黄色小视频| 亚洲一区免费视频| 欧美国产三级| 狠狠色综合网| 欧美二区乱c少妇| 国产精品久久久久久久久借妻 | 在线免费观看成人网| 亚洲在线电影| 亚洲国内自拍| 久久婷婷亚洲| 国产精品一区二区在线观看网站| 亚洲国产婷婷| 久热精品视频在线| 亚洲欧美日韩国产综合在线| 欧美日韩国产精品一区| 亚洲高清二区| 久久影视三级福利片| 亚洲欧美日韩精品久久奇米色影视| 欧美激情中文不卡| 在线免费观看日韩欧美| 久久亚洲春色中文字幕| 午夜精品久久久久| 国产精品入口日韩视频大尺度| 日韩视频在线免费| 欧美国产视频在线| 久久人体大胆视频| 影音先锋日韩精品| 久久人人爽人人爽爽久久| 亚洲欧美日韩电影| 国产精品夜色7777狼人| 欧美久久成人| 亚洲经典自拍| 亚洲欧洲精品天堂一级| 欧美成人精品一区| 亚洲美女诱惑| 夜夜嗨av一区二区三区中文字幕| 欧美日本亚洲| 亚洲欧美日韩精品一区二区| 在线亚洲观看| 国产日韩欧美日韩| 久久先锋资源| 免费成人你懂的| av不卡在线| 亚洲午夜一区二区三区| 国产日韩精品在线观看| 久久综合久久综合九色| 免费观看国产成人| 一本一道久久综合狠狠老精东影业| 亚洲国产91| 欧美日韩国产片| 亚洲香蕉在线观看| 午夜精彩视频在线观看不卡 | 欧美成人免费观看| 亚洲精品韩国| 99re66热这里只有精品4| 国产精品国产a| 久久久无码精品亚洲日韩按摩| 欧美在线免费视频| 亚洲电影第1页| 亚洲麻豆av| 国产亚洲午夜高清国产拍精品| 久热re这里精品视频在线6| 免费在线亚洲| 亚洲欧美色婷婷| 久久免费视频网| 99视频精品全部免费在线| 亚洲影院免费| 最新日韩在线视频| 亚洲女性喷水在线观看一区| 亚洲大胆人体视频| 亚洲一区二区三区免费视频| 伊人精品视频| 亚洲午夜国产成人av电影男同| 韩曰欧美视频免费观看| 日韩写真视频在线观看| 一区在线影院| 亚洲综合成人婷婷小说| 日韩视频精品在线| 欧美伊人久久大香线蕉综合69| 亚洲欧洲日本专区| 欧美在线播放高清精品| 亚洲少妇最新在线视频| 久久久久综合一区二区三区| 亚洲欧美激情视频| 欧美激情四色| 欧美高清hd18日本| 国产一区二区三区观看| 亚洲永久免费观看| 亚洲视频在线观看三级| 免费成人毛片| 久久综合婷婷| 国产一区二区欧美| 亚洲一区二区三区免费视频| 99热在线精品观看| 欧美成人免费在线| 欧美成人精品激情在线观看| 国产午夜精品美女视频明星a级| 亚洲视频一区二区在线观看 | 欧美连裤袜在线视频| 亚洲另类一区二区| 久久在线免费| 久久精品一本| 国产欧美日韩综合一区在线播放 | 国产免费成人| aa日韩免费精品视频一| 日韩午夜精品| 欧美精品一区二区在线观看| 欧美成ee人免费视频| 黄色av日韩| 久久夜色精品国产亚洲aⅴ | 一本色道久久综合亚洲精品高清| 欧美一区日本一区韩国一区| 你懂的国产精品| 好吊成人免视频| 欧美中文字幕久久| 久久午夜色播影院免费高清| 玉米视频成人免费看| 久热re这里精品视频在线6| 欧美1级日本1级| 亚洲三级观看| 欧美视频日韩| 亚洲欧美日韩国产中文| 久久精品一区四区| 亚洲国产另类久久久精品极度 | 国产一区二区三区网站| 香港久久久电影| 美女视频黄 久久| 亚洲美女视频在线观看| 国产精品99免视看9| 久久爱www久久做| 欧美福利一区| 亚洲性夜色噜噜噜7777| 国产精品永久免费在线| 久久精品国产亚洲aⅴ| 亚洲成人自拍视频| 一区二区日韩精品| 国产日韩综合| 欧美精品久久久久久久久老牛影院| 一区二区精品国产| 久久综合给合久久狠狠色| 日韩网站在线观看| 国产日韩精品在线| 欧美大片免费看| 亚洲欧美三级伦理| 亚洲欧洲日本国产| 久久精品一区二区三区中文字幕 | 在线亚洲精品| 国产在线不卡视频| 欧美精品在线免费| 欧美一级艳片视频免费观看| 欧美国产综合视频| 欧美一级黄色网| 99视频超级精品| 在线欧美一区| 国产欧美日韩一区二区三区在线 | 国产一区二区欧美| 欧美日韩综合在线| 久久综合久久综合九色| 亚洲午夜电影在线观看| 欧美激情一区二区三区在线视频观看| 亚洲欧美另类在线观看| 亚洲精品乱码视频 | 欧美在线一区二区三区| 99伊人成综合| 亚洲欧洲三级| 亚洲国产高潮在线观看| 国产欧美69| 欧美午夜国产| 欧美精品一区在线| 欧美大香线蕉线伊人久久国产精品| 欧美在线黄色| 欧美亚洲一区二区在线观看| 亚洲视频每日更新| 一区二区三区四区精品|