ACM 單調隊列(經典應用求k長的數列的最小值)

代碼來自《挑戰程序設計競賽》

#include <iostream>

using namespace std;

#define MAX_N 1000

int n,k;
int num[MAX_N];
int deq[MAX_N];

int main()
{
    int s=0,t=0;

    for(int i=0;i<n;i++)
    {
        while(s<t && num[deq[t-1]]>=num[i]) t--;
        deq[t]=i;
        if(i-k+1>=0)
        {
            b[i-k+1]=num[deq[s]];
            if(deq[s]==i-k+1)
            {
                s++;
            }
        }
    }

    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章