zoukankan      html  css  js  c++  java
  • poj

    题意:n个数的序列,长为k个数的窗体,窗体从左从右移,问窗体移动过程中每一个状态的最小最大值。

    题目链接:http://poj.org/problem?

    id=2823

    ——>>单调队列练手。

    C++用时5391MS,G++会TLE。

    。不解。。望路过的朋友指导一下原因。

    #include <cstdio>
    #include <vector>
    #include <queue>
    
    const int MAXN = 1000000 + 1;
    
    int arrIn[MAXN];
    int arrRet[MAXN];
    int arrDq[MAXN];
    int arrId[MAXN];
    
    void Pop(const int& nVal, const bool& bFlag, const int& nFront, int& nTail)
    {
        if (!bFlag)
        {
            while (nFront != nTail && nVal <= arrDq[nTail - 1])
            {
                nTail--;
            }
        }
        else
        {
            while (nFront != nTail && nVal >= arrDq[nTail - 1])
            {
                nTail--;
            }
        }
    }
    
    void GetRet(int n, int k, bool bFlag = false)
    {
        int nFront = 0;
        int nTail = 0;
    
        for (int i = 0; i < n; ++i)
        {
            Pop(arrIn[i], bFlag, nFront, nTail);
            arrDq[nTail++] = arrIn[i];
            arrId[nTail - 1] = i;
            while (nFront != nTail && arrId[nFront] <= i - k)
            {
                nFront++;
            }
            if (i >= k - 1)
            {
                arrRet[i - k + 1] = arrDq[nFront];
            }
        }
    }
    
    void Read(int n)
    {
        getchar();
        for (int i = 0; i < n; ++i)
        {
            scanf("%d", arrIn + i);
        }
    }
    
    void Output(int* arr, int n)
    {
        for (int i = 0; i < n - 1; ++i)
        {
            printf("%d ", arr[i]);
        }
        if (n)
        {
            printf("%d
    ", arr[n - 1]);
        }
    }
    
    int main()
    {
        int n, k;
    
        while (scanf("%d%d", &n, &k) == 2)
        {
            Read(n);
            GetRet(n, k);
            Output(arrRet, n - k + 1);
            GetRet(n, k, true);
            Output(arrRet, n - k + 1);
        }
    
        return 0;
    }
    

  • 相关阅读:
    codeforces-1194 (div2)
    单链表1(悲剧文本)
    迷宫(深度搜索)
    皇后问题
    关键路径
    [NOI2015]软件包管理器
    [USACO13JAN]岛游记Island Travels
    仓鼠找sugar
    [SHOI2012]魔法树
    [HEOI2016/TJOI2016]树
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6873719.html
Copyright © 2011-2022 走看看