zoukankan      html  css  js  c++  java
  • HDU 3410【单调栈】

    思路:
    单调栈。
    鄙人的记忆:按当前为最大值的两边延伸就是维护单调递减栈。
    //#include <bits/stdc++.h>
    #include <iostream>
    #include <stack>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <map>
    using namespace std;
    typedef long long LL;
    typedef pair<int,int> PII;
    const int N=50000+10;
    struct asd{
        int id;
        int left,right,w;
    };
    int n,a[N];
    int ans[N][2];
    stack<asd>q;
    int main()
    {
        while(!q.empty())
            q.pop();
        int T,cas=1;
        scanf("%d",&T);
        while(T--)
        {
            asd now,nex;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d",&a[i]);
            now.id=1;
            now.left=now.right=1;
            now.w=a[1];
            q.push(now);
            for(int i=2;i<=n;i++)
            {
                nex.id=i;
                nex.left=nex.right=i;
                nex.w=a[i];
                while(!q.empty()&&q.top().w<a[i])
                {
                    now=q.top();q.pop();
                    ans[now.id][0]=now.left!=now.id?now.left:0;
                    ans[now.id][1]=now.right!=now.id?now.right:0;
                    if(!q.empty())
                        q.top().right=now.id;
                    nex.left=now.id;
                }
                q.push(nex);
            }
            while(!q.empty())
            {
                now=q.top();q.pop();
                ans[now.id][0]=now.left!=now.id?now.left:0;
                ans[now.id][1]=now.right!=now.id?now.right:0;
                if(!q.empty())
                    q.top().right=now.id;
            }
            printf("Case %d:
    ",cas++);
            for(int i=1;i<=n;i++)
                printf("%d %d
    ",ans[i][0],ans[i][1]);
        }
        return 0;
    }


  • 相关阅读:
    取文本中数字
    成绩统计excel
    excel日期转化为周次
    ConcurrentHashMap之实现细节(转)
    线程互斥(互斥变量)
    Spring的历史论(数据脱敏)
    Java之递归
    触摸java常量池
    利用ant脚本 自动构建svn增量/全量 系统程序升级包
    JDK1.5/1.6/1.7新特性
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777412.html
Copyright © 2011-2022 走看看