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

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

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

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

   代碼如下:
#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)隊(duì)列
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 閱讀(1720) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

評(píng)論

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

問(wèn)個(gè)問(wèn)題,如果窗口的長(zhǎng)度變的,復(fù)雜度該如何分析呢?  回復(fù)  更多評(píng)論   

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

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

<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導(dǎo)航

統(tǒng)計(jì)

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學(xué)

網(wǎng)友

搜索

最新評(píng)論

閱讀排行榜

評(pí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>
            激情国产一区二区| 国产精品xxxav免费视频| 亚洲激情视频| 久久女同互慰一区二区三区| 亚洲国产精品嫩草影院| 亚洲国产婷婷香蕉久久久久久| 欧美高清视频一区二区三区在线观看| 伊人久久婷婷| 亚洲精品久久久久久一区二区| 欧美日韩一视频区二区| 性欧美大战久久久久久久久| 久久精品国产2020观看福利| 91久久精品网| 一区二区三区高清不卡| 国产精品久久久一区二区三区 | 欧美一区二区三区电影在线观看| 国内精品视频在线播放| 亚洲成色www8888| 欧美日韩在线不卡| 久久精品国产综合精品| 欧美 日韩 国产一区二区在线视频| 99re热这里只有精品视频| 亚洲婷婷在线| 亚洲高清123| 在线视频欧美日韩| 今天的高清视频免费播放成人| 最近中文字幕mv在线一区二区三区四区 | 欧美午夜国产| 久久久久久网| 欧美精品成人一区二区在线观看 | 国产精品不卡在线| 久久精品国产在热久久| 欧美精品久久久久久久| 久久成人国产精品| 欧美激情一区二区三区在线视频观看| 亚洲欧美变态国产另类| 久久偷窥视频| 午夜精品久久久久| 免费亚洲网站| 欧美中文字幕视频| 欧美国产日韩xxxxx| 欧美中文在线观看国产| 欧美久久久久久久久久| 久久精品国产综合| 欧美日韩一区高清| 男人天堂欧美日韩| 国产精品久久一级| 亚洲国产另类久久精品| 国产精品一区二区三区乱码 | 一区二区三区.www| 曰本成人黄色| 在线视频中文亚洲| 91久久精品一区二区三区| 午夜精品免费在线| 在线亚洲自拍| 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美激情综合网| 久久五月激情| 国产精品每日更新| 亚洲国产三级网| 国内精品视频在线播放| 亚洲一区二区三区四区视频 | 欧美—级在线免费片| 久久综合电影一区| 国产精品美女视频网站| 亚洲激情在线观看| 影音先锋亚洲精品| 欧美一级在线视频| 日韩视频亚洲视频| 久久亚洲色图| 久久久久一区二区| 国产精品三上| 99视频国产精品免费观看| 亚洲黄色一区| 久久久久久久91| 久久九九国产精品| 国产精品一级久久久| 99精品国产99久久久久久福利| 亚洲精品久久久久久久久久久久| 久久精品视频在线观看| 久久国产精品色婷婷| 国产精品区一区| 一个色综合导航| 一区二区三区高清在线| 欧美成人一区在线| 久久免费偷拍视频| 国产亚洲精品久久久久婷婷瑜伽| 99日韩精品| 亚洲图片欧美午夜| 欧美日韩国产影院| 亚洲精品午夜| 一本大道久久a久久综合婷婷| 欧美18av| 亚洲国产成人在线| 亚洲国内精品| 欧美a级片一区| 亚洲第一二三四五区| 亚洲国产精品黑人久久久| 久久在线视频在线| 蜜臀av国产精品久久久久| 一区免费视频| 久久久久久9| 免费亚洲电影在线观看| 亚洲第一成人在线| 毛片av中文字幕一区二区| 欧美高清视频在线播放| 亚洲人成77777在线观看网| 免费亚洲婷婷| 亚洲欧洲综合另类| 一区二区高清在线观看| 欧美日韩亚洲系列| 亚洲第一中文字幕在线观看| 99精品免费网| 亚洲综合欧美| 国产欧美不卡| 性欧美xxxx视频在线观看| 久久久久久九九九九| 国产欧美一区二区色老头| 欧美一二三视频| 欧美一区二区三区在线视频| 国产一区二区黄色| 久久久久免费观看| 欧美国产日韩视频| 一卡二卡3卡四卡高清精品视频| 欧美日韩国产欧| 亚洲婷婷综合久久一本伊一区| 欧美一二三区在线观看| 国产尤物精品| 另类酷文…触手系列精品集v1小说| 欧美福利在线| av不卡在线观看| 国产精品久久久久久久久久尿| 一区二区三区四区五区在线| 欧美一区二区三区四区在线观看地址 | 亚洲精一区二区三区| 亚洲视频在线视频| 国产精品夜夜夜| 久久久国产一区二区| 亚洲福利专区| 亚洲午夜av| 国产日韩亚洲欧美综合| 久久成人精品无人区| 久久夜色精品国产亚洲aⅴ| 亚洲人成欧美中文字幕| 国产精品啊啊啊| 久久精品国产精品| 欧美肥婆bbw| 亚洲一二三区视频在线观看| 国产亚洲精品激情久久| 久久综合精品国产一区二区三区| 亚洲精品久久久蜜桃| 亚洲综合999| 红桃视频一区| 欧美精品日韩精品| 亚洲欧美999| 欧美高清hd18日本| 亚洲免费综合| 18成人免费观看视频| 欧美日韩国产首页| 久久成人18免费观看| 亚洲精品美女在线观看| 久久黄色影院| 99国产精品国产精品久久| 国产老女人精品毛片久久| 麻豆精品在线观看| 亚洲在线观看免费视频| 欧美激情综合| 午夜精品视频在线观看一区二区| 激情欧美丁香| 欧美日韩性视频在线| 久久精品视频一| 亚洲性色视频| 亚洲福利在线视频| 欧美一级专区免费大片| 亚洲精品色图| 国产在线不卡精品| 欧美日韩在线免费视频| 99国产精品视频免费观看一公开 | 亚洲一区观看| 亚洲国产经典视频| 国产伦精品一区二区三区| 欧美黑人多人双交| 久久精品导航| 亚洲一区二区三区精品在线 | 国产精品无码专区在线观看| 久久夜色撩人精品| 亚洲男人影院| 亚洲精品一区二区三区99| 久久深夜福利免费观看| 亚洲欧美日韩成人| 亚洲精品一区久久久久久| 韩国成人精品a∨在线观看| 欧美无乱码久久久免费午夜一区| 久久综合狠狠| 久久国产精品高清| 亚洲一区精彩视频| 亚洲卡通欧美制服中文| 欧美高清视频一区二区| 久久伊伊香蕉| 欧美专区18|