zoukankan      html  css  js  c++  java
  • Luogu【P1901】发射站(单调栈)

    题目链接

    题目说明比自己矮的塔收不到自己的能量,摆明了就是单调栈呗。

    把比自己矮的全都从栈里弹出去,于是碰到第一个比自己高的。让他接受自己发射的能量。

    当然由于发射站发射的能量有两个方向,所以正反两遍。

    然后 放代码。

    #include<cstdio>
    #include<cstdlib>
    #include<cctype>
    using namespace std;
    
    long long ans;
    
    inline long long max(long long a,long long b){    return a>b?a:b;    }
    
    const int size=2000000;
    
    long long stack[size],top;
    
    inline long long read(){
        long long num=0,f=1;
        char ch=getchar();
        while(!isdigit(ch)){
            if(ch=='-')    f=-1;
            ch=getchar();
        }
        while(isdigit(ch)){
            num=(num<<1)+(num<<3)+ch-'0';
            ch=getchar();
        }
        return num*f;
    }
    
    struct file{
        long long h;
        long long v;
        long long c;
    }que[size];
    
    
    int main(){
        int n=read();
        for(int i=1;i<=n;++i){
            que[i].h=read();
            que[i].v=read();
        }
        for(int i=1;i<=n;++i){
            while(top&&que[stack[top]].h<=que[i].h)    top--;
            que[stack[top]].c+=que[i].v;
            stack[++top]=i;
        }
        top=0;
        for(int i=n;i>0;--i){
            while(top&&que[stack[top]].h<=que[i].h)    top--;
            que[stack[top]].c+=que[i].v;
            stack[++top]=i;
        }
        for(int i=1;i<=n;++i)    ans=max(ans,que[i].c);
        printf("%lld",ans);
        return 0;
    }
  • 相关阅读:
    javascript执行上下文
    javascript深浅拷贝
    javascript模块化
    javascript类型转换
    闭包
    通过插槽分发内容
    组件上使用v-model
    Vue $emit $event 传值(子to父)
    Vue Prop属性(父to子)
    Vue组件全局/局部注册
  • 原文地址:https://www.cnblogs.com/cellular-automaton/p/7061532.html
Copyright © 2011-2022 走看看